MQTT 在 messageArrived 方法中出现异常时重试
MQTT retries when Exception in messageArrived method
我有一个 MQTT 回调,它转发来自通过 SOAP 端点接收的消息的部分数据,但是当 SOAP 端点出现故障时,这些消息就会丢失,永远不会到达最终消费者。
我知道不同的 QOS 和传递令牌,但我不确定其中任何一个是否真的会帮助我重试发送这些消息,例如在触发异常后。消息可以 "returned" 到主题以供稍后重试或类似的东西以确保正确处理完整消息吗?
在客户端,我通过 Maven 使用 Eclipse-Paho:
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.0.1</version>
</dependency>
来自这个存储库:
https://repo.eclipse.org/content/repositories/paho-releases
在服务器端:
Debian GNU/Linux 8.5 (jessie)
mosquitto 1.3.4-2 (MQTT version 3.1/3.1.1 compatible)
我还应该提供什么?
不,消息一旦传送到客户端就完全从 MQTT 系统中消失了。
您可以自行决定在 MQTT 客户端应用程序中构建任何存储和重试逻辑,以处理下游系统中的任何故障。
我有一个 MQTT 回调,它转发来自通过 SOAP 端点接收的消息的部分数据,但是当 SOAP 端点出现故障时,这些消息就会丢失,永远不会到达最终消费者。
我知道不同的 QOS 和传递令牌,但我不确定其中任何一个是否真的会帮助我重试发送这些消息,例如在触发异常后。消息可以 "returned" 到主题以供稍后重试或类似的东西以确保正确处理完整消息吗?
在客户端,我通过 Maven 使用 Eclipse-Paho:
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.0.1</version>
</dependency>
来自这个存储库: https://repo.eclipse.org/content/repositories/paho-releases
在服务器端:
Debian GNU/Linux 8.5 (jessie)
mosquitto 1.3.4-2 (MQTT version 3.1/3.1.1 compatible)
我还应该提供什么?
不,消息一旦传送到客户端就完全从 MQTT 系统中消失了。
您可以自行决定在 MQTT 客户端应用程序中构建任何存储和重试逻辑,以处理下游系统中的任何故障。