如果 eventgrid 事件传递失败,设备是否从 IoThub 收到错误消息?

Does the device get the error message from IoThub if the eventgrid event delivery fails?

我想知道如果事件网格消息失败,IoThub 是否会通知设备? 这是架构流程:

设备->IoTHub->EventGrid->Webhook

因此,当 EevntGrid 遇到一些错误(例如由于某种原因导致的 400/500 错误)时,IoThub 是在设备可以重试时通知设备此失败,还是发送一条消息,让设备认为消息是否已成功发送至 Webhook?是否有我们可以将此错误通知设备的工作流程/设计?

So when the EevntGrid gets some error(like 400/500 error due to some reason), does IoThub inform the device of this failure when the device could retry, or does it send a message received where the device will think the message has been sent successfully to the Webhook?

不是,是异步流程。不会有任何云到设备的消息告诉设备失败。至少不是开箱即用的。此外,重试逻辑已存在于事件网格中,设备无需重试消息,除非它无法与 IoT 中心通信。

Is there a workflow/ design where we could inform the device of this error?

举个例子:

  1. 设备发送遥测数据
  2. IoT 中心接收消息并将其传递给事件网格
  3. 事件网格尝试传递事件
  4. 由于暂时性错误,事件传递失败
  5. 事件网格在给定时间段内重试事件传递 n 次
  6. 事件已成功传递或死信
  7. 如果传递成功,消息将由端点处理。

现在,只能在第 6 步(或第 7 步,如果要包含最终端点的响应)发送云到设备消息。步骤 1 和 6/7 之间可能有几毫秒,或者可能有几分钟、几小时甚至几天(在最坏的情况下,取决于重试配置和端点状态)。

合乎逻辑的做法是让端点发布自己的事件并将其传送到云设备,但这将是一个异步流程。

为什么要让设备承担消息传递的结果?我认为它不应该担心流量,除非它无法与 IoT Hub 通信。