我正在尝试将我的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
?
答案 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);
}