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

问题描述

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

设备->IoTHub->EventGrid->Webhook

因此,当 EevntGrid 出现错误(例如由于某种原因导致 400/500 错误)时,IoThub 是否会在设备可以重试时通知设备此故障,或者是否发送收到的消息,设备会认为该消息已经成功发送到 Webhook 了吗?是否有工作流程/设计可以让我们将此错误通知给设备?

解决方法

因此,当 EevntGrid 出现错误(例如由于某种原因导致 400/500 错误)时,IoThub 是否会在设备可以重试时通知设备此故障,或者是否发送收到的消息,设备会认为该消息已成功发送至 Webhook?

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

是否有工作流程/设计可以通知设备此错误?

以这个例子为例:

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

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

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

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