Azure Function V2 服务总线消息延迟

Azure Function V2 Service Bus Message Deferral

我正在尝试将我的 v1 函数转换为 v2 函数,但找不到延迟消息的替代方法。

在 Azure Functions V1 中,它是 BrokeredMesage 上的一个方法,名为 .DeferAsync()。在 V2 中不再有 BrokeredMessage 而只有 Microsoft.Azure.ServiceBus.Message 并且它不包含 .DeferAsync().

的方法

根据 docs:

The API is BrokeredMessage.Defer or BrokeredMessage.DeferAsync in the .NET Framework client, MessageReceiver.DeferAsync in the .NET Standard client, and mesageReceiver.defer or messageReceiver.deferSync in the Java client.

但是我怎样才能访问 MessageReciever? 这是我的函数的一个例子:

[FunctionName("MyFunction")]
public static void Run([ServiceBusTrigger("topic", "subscription", Connection = "AzureServiceBusPrimary")]Message message, ILogger log)
{
    //Code
}

那么有人知道如何延迟从 Azure 服务总线触发的 V2 Message 吗?

正如您提到的,新的消息接收器提供了一个异步延迟方法,您可以使用以下代码将其添加到您的函数中:

[FunctionName("MyFunction")]
public static async Task Run([ServiceBusTrigger("topic", "subscription", Connection = "AzureServiceBusPrimary")]Message message, string lockToken, MessageReceiver messageReceiver, ILogger log)
{
    //Your function logic
    await messageReceiver.DeferAsync(lockToken);
}