Azure Function V2服务总线消息延迟

时间:2019-06-04 07:20:03

标签: c# azure azure-functions messaging azureservicebus

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

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

根据docs

  

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

但是如何获得对MessageReciever的访问权限? 这是我的功能的示例:

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

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

1 个答案:

答案 0 :(得分:2)

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

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