Azure Functions V4 // ServiceBusTrigger 和绑定属性,例如 Message 或 MessageReceiver

Thr*_*itt 1 azureservicebus azure-servicebus-queues azure-functions

我正在开发一个带有 ServiceBusTrigger 队列的 Azure Function(进程内模型,V 4.1)。该函数工作正常并被触发。该函数如下所示:

    public async Task Run([ServiceBusTrigger("my-queue", Connection = "myConnectionString", AutoCompleteMessages = true)]
        string myQueueItem, Int32 deliveryCount, DateTime enqueuedTimeUtc, string messageId)
Run Code Online (Sandbox Code Playgroud)

我现在希望能够获取我在消息中传递的correlationId,并且我希望能够自己“Complete()”消息。

我在这里查看了文档(https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-trigger?tabs=in-process%2Cextensionv5&pivots=programming-language-csharp)但没有找到任何方法来绑定其他参数,如 Message、MessageReceiver 等。每当我尝试使用这些参数时,函数运行时都会出现绑定异常。

这些是我正在使用的相关包

<PackageReference Include="Azure.Messaging.ServiceBus" Version="7.7.0" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Core" Version="1.4.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.3.0" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.0" />
Run Code Online (Sandbox Code Playgroud)

我一定错过了一些东西......任何提示都会受到赞赏!

编辑:清理后,这些是相关的包:

<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="5.3.0" />
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.3" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.1.0" />
Run Code Online (Sandbox Code Playgroud)

Sea*_*man 5

我正在开发 Azure Function(进程内模型,V 4.1)

你不。

<PackageReference Include="Microsoft.Azure.Functions.Worker.Core" Version="1.4.0" />

根据您使用的 NuGet 包,该 SDK 是进程外/独立工作人员 SDK。使用独立工作人员 SDK,您无法自己完成消息。这只有通过 In-Process SDK 才能实现。此外,SDK 特定类型(例如ServiceBusReceivedMessage或 )ServiceBusReceiver也不可用。

也就是说,您可以访问消息的系统和应用程序属性。您需要FunctionContext通过以下方式访问:

context.BindingContext.BindingData.TryGetValue("CorrelationId", out var label)
Run Code Online (Sandbox Code Playgroud)

如果您需要访问 SDK 类型或自行完成消息,则需要使用 Azure Functions In-Process SDK Microsoft.NET.Sdk.Functions、.