Sch*_*der 5 azure azure-eventhub azure-iot-hub azure-functions
关于Azure函数的EventHubTrigger,我有点困惑.
我有一个IoT Hub,并且正在使用其eventhub兼容端点来触发Azure功能,该功能将处理和存储接收到的数据.
但是,如果我的函数失败(=抛出异常),那个函数调用期间正在处理的消息(或消息)将丢失.我实际上希望Azure函数运行时再次处理消息.具体来说,我希望这种行为是因为EventHubTrigger在功能应用程序存储帐户中保留检查点,以便跟踪它必须继续在事件流中的位置.
EventHubTrigger的文档甚至说明了这一点
如果所有功能执行成功且没有错误,则会将检查点添加到关联的存储帐户
但是,即使我故意在我的函数中抛出异常,检查点也会更新,并且不会再次收到消息.
我对EventHubTriggers文档的理解是错误的,还是EventHubTriggers实现(或其文档)错了?
这篇文档似乎确实令人困惑.我猜它们是指函数应用程序主机本身的错误,而不是代码的错误.函数执行内部的异常不会停止处理和检查点进度.
事实上,事件中心不是为单个消息重试而设计的.处理器分批工作,它可以将整个批处理标记为已处理(即在其后创建检查点),或者重试整个批处理(例如,如果进程崩溃).
看到这个论坛的问题和答案.
如果您仍需要从Event Hub重新处理失败的事件(并且错误不会经常发生),您可以自己实现此类机制.例如
请注意,这样做的缺点是您将松开事件中心提供的排序保证(因为队列消息将比其邻居更晚处理).
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |