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