azure-eventgrid - 当有多个订阅者时,Azure 事件网格如何处理失败?

标签 azure-eventgrid

事件网格的文档说明它有一个 delivery and retry mechanism内置,并给出了一个例子,说明什么可以归类为成功或失败的尝试。文档非常清楚地说明了单个事件处理程序会发生什么。

我的问题是,如果有多个事件处理程序,并且只有一个处理程序未能接收到事件,会发生什么?事件是仅针对该处理程序重试,还是所有处理程序都会看到重试?

最佳答案

基本上,Azure 事件网格事件发布/订阅模型可以处理两种消息/中介模式,例如 扇入 图案和 扇出 (广播)模式。以下屏幕片段显示了它们的区别:

enter image description here

enter image description here

事件源和事件接收器之间的逻辑连接由订阅描述,它基本上是 Pub/Sub 模型的元数据工件。每个逻辑连接(由订阅表示)都是独立的,并且与其他逻辑连接松散地解耦。换句话说,每个订阅者在这个 Pub/Sub 模型中只能处理一个逻辑连接,例如只有一个事件源。

您的问题与扇出(广播)模式有关,其中事件兴趣使用 PushWithAck 交付模式向多个订阅者广播。这个扇出模式中的每个订阅都有自己的“消息状态传递机”,由订阅者声明,例如重试选项、死信、过滤等。

换句话说,向订阅者的事件传递是基于他们的订阅以透明的方式并行处理的,彼此之间没有任何依赖关系。请注意,订阅者没有任何关于谁、在哪里、如何等将事件传递给其他人一次的任何信息,因此每个订阅者只能看到自己的传递状态,例如,Aeg-Delivery-Count 的值显示状态机的重试计数器。

因此,在向多个订阅者之一发送失败事件的情况下,启用的重试过程仅针对该订阅者执行。

关于azure-eventgrid - 当有多个订阅者时,Azure 事件网格如何处理失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54316309/

相关文章:

node.js - 如何将 eventGrid 添加到 NodeJS 中 Azure Functions 中的 http 触发器?

插入到 Azure SQL 表时触发 Azure 事件网格自定义主题

Azure 事件网格在订阅边栏选项卡中指定多种事件类型

.net - Azure函数EventGridTrigger : Error binding parameter

azure - 检测 Azure 服务总线队列中相同的未处理消息

json - 如何为 Azure 服务编写 MassTransit Json 反序列化器

azure - 如何使用arm模板为事件网格域主题创建事件订阅

azure-eventgrid - 为 Azure 函数创建 EvenGridSubscription 时尝试验证提供的端点失败

c# - 在订阅 Azure 应用程序配置中的更改的 Web API 中实现 Azure 事件网格事件处理程序