azure-functions - Azure Functions 2.0 中 ServiceBusTriggers 的 CompleteAsync 和 AbandonAsync 方法发生了什么
问题描述
我可以在 Azure Functions 1.0 中实现类似于以下内容的内容,但现在它似乎在 2.0中CompleteAsync()
并且AbandonAsync()
不再可用。
[FunctionName("Process")]
public static async System.Threading.Tasks.Task RunAsync(
[ServiceBusTrigger(
"%ServiceBus.Topic%", "%ServiceBus.Subscription%",
Connection = "AzureWebJobsServiceBus")]Message message, ILogger log) {
try {
MyMessageModel messageModel = message.GetBody<MyMessageModel>();
await DoAllTheThingsAsync().ConfigureAwait(false);
await message.CompleteAsync().ConfigureAwait(false);
} catch {
await message.AbandonAsync().ConfigureAwait(false);
throw;
}
}
是否已将控制权交给了Peek Lock 的 Azure 函数默认值?
解决方案
Azure Function 1.X 使用WindowsAzure.ServiceBus库来处理消息。在那里,方法CompleteAsync()
与Function 接收的BrokeredMessageAbandonAsync()
对象一样可用。
在 2.X 版本的 Functions 中,使用了Microsoft.Azure.ServiceBus库,此处 BrokeredMessage 被Message对象替换,没有此类方法可用。它们仅在QueueClient下可用。
推荐阅读
- c# - 如何仅映射输入中的属性?
- flutter - 使用 onPressed Flutter 刷新类
- scope - F# 中的范围混淆
- javascript - 试图用实际数据替换占位符文本,但它不起作用
- java - 从前辈打印 Dijkstra 算法
- docker - 容器启动时需要循环命令
- laravel - Laravel - 如何在急切加载的多态关系中按字段排序查询?
- segmentation-fault - Cython:用于索引的意外类型 int_t 和基类型元组对象
- gatsby - 在 Gatsby 中为 IE11 启用自动前缀(特别是)网格
- excel - 从另一个工作簿更新数据透视表工作簿中的数据