Azure Function V2服务总线消息延迟

问题描述:

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

I am attempting to convert my v1 function to a v2 function, but I cannot find a replacement for deferring a message.

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

In V1 of Azure Functions it was a method on the BrokeredMesage called .DeferAsync(). In V2 there is no longer a BrokeredMessage but just a Microsoft.Azure.ServiceBus.Message and this does not contain the method of .DeferAsync().

根据 docs :

该API在.NET Framework客户端中为BrokeredMessage.Defer或BrokeredMessage.DeferAsync,在.NET Standard客户端中为MessageReceiver.DeferAsync,而在Java客户端中为mesageReceiver.defer或messageReceiver.deferSync.

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的访问权限? 这是我的功能的示例:

But how can I get access to the MessageReciever? Here is an example of my function:

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

那么有谁知道如何推迟从Azure Service Bus触发的V2 Message?

So does anyone know how to defer a V2 Message that is triggered from the Azure Service Bus?

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

As you mention, the new message receiver offers an async defer method and you can add this to your function by using the following code:

[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);
}