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

And*_*son 2 azure-eventgrid

Event Grid的文档指出,它内置了一种传递和重试机制,并提供了一个将成功或失败尝试归类的示例。该文档非常清楚单个事件处理程序会发生什么。

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

Rom*_*iss 5

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

在此处输入图片说明

在此处输入图片说明

订阅描述了事件源与事件接收器之间的逻辑连接,订阅基本上是发布/订阅模型的元数据工件。每个逻辑连接(由预订表示)都是独立的,并且彼此松散地分离。换句话说,每个订户在此发布/订阅模型中只能处理一个逻辑连接,例如仅一个事件源。

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

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

因此,在失败事件传递到多个订户之一的情况下,启用的重试过程仅针对该订户执行。