Skip to content

Can't use isolated model with RabbitMQ extension for SharePoint WebHooks #3190

@NinjaSciurus

Description

@NinjaSciurus

What version of .NET does your existing project use?

.NET 6

What version of .NET are you attempting to target?

.NET 8

Description

In the in-process model the RabbitMQ extension used an IAsyncCollector interface to send messages, injected into the function's Run method as a call parameter (this is still part of the official documentation). This allowed to use an Azure Function as SharePoint WebHook receiver, since registering a new SharePoint WebHook requires the function to return a validationToken as a simple string to the caller (SharePoint).

Now, the isolated model only supports the RabbitMQOutputAttribute which defines the return value of the function to be pushed to RabbitMQ without exception. By this design, the RabbitMQ extension became unusable in a SharePoint WebHook Azure Function using the recommended isolated worker model.

Am I missing something or is it actually not possible anymore to use the RabbitMQ extension in a SharePoint WebHook?

Project configuration and dependencies

This is our current mid-migration .NET 8 .csproj file:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <AzureFunctionsVersion>v4</AzureFunctionsVersion>
    <OutputType>Exe</OutputType>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>disable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.ApplicationInsights.WorkerService" Version="2.23.0" /> 
    <PackageReference Include="Microsoft.Azure.Functions.Worker.ApplicationInsights" Version="2.0.0" /> 
    <PackageReference Include="Microsoft.Azure.Functions.Worker" Version="2.1.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.3.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http.AspNetCore" Version="2.0.2" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.RabbitMQ" Version="2.1.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="2.0.5" />
    <PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Using Include="System.Threading.ExecutionContext" Alias="ExecutionContext" />
  </ItemGroup>
</Project>
`

### Link to a repository that reproduces the issue

_No response_

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions