我编写了一个Azure函数,它正在处理来自事件中心的消息,并将消息写入Azure表。
错误处理在Azure Functions中的工作原理是什么?如何在处理消息时发出失败信号,以确保在未正确写入Azure表的情况下不从Event Hub中永久删除该消息?
答案 0 :(得分:0)
事件中心消息将消失:msdn上的详细信息。
EventHubs适用于大批量生产。有重大意义 这里暗示分支 - 这是通过处理事件来实现的 批量批量处理批次。所以它不利于 重试个别事件和毒药队列。
一些选项:
如果您的音量较低,请改用Azure队列。这具有更好的重试和毒性队列语义
- 醇>
您的处理程序可以捕获用户代码中的错误并执行您自己的错误处理策略,例如重试或发送到您自己的毒性队列。
如果查看Azure Functions Bindings docs,Storage QueueTriggers和BlobTriggers会将消息路由到毒性队列,而Service Bus Queues / Topics / Subscriptions会在Service Bus级别处理有害消息。
答案 1 :(得分:0)
只是一个建议 - 如何使用EventHub的组合+像Azure Queue这样的东西?意味着使用事件中心来汇集高流量数据并让它触发Azure功能,然后如果出现问题,将有效负载推送到Azure队列,这样您就可以对Azure队列进行回退处理,并可能允许更好的故障排除。就像Matt上面提到的那样 - 高容量队列 - 或者我应该说更像数据管道,对数据保留有限制,这是由于队列数据的性质而设计的。