【问题标题】:MQTT retries when Exception in messageArrived methodMQTT 在 messageArrived 方法中出现异常时重试
【发布时间】:2017-06-14 05:03:06
【问题描述】:

我有一个 MQTT 回调,它转发通过 SOAP 端点接收的消息中的部分数据,但是当 SOAP 端点出现故障时,这些消息会丢失并且永远不会到达最终消费者。

我知道不同的 QOS 和传递令牌,但我不确定其中是否真的可以帮助我在触发异常后重试发送这些消息。是否可以将消息“返回”到主题以供以后重试或类似的方式以确保正确处理完整的消​​息?

在客户端,我通过 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)

我还应该提供什么?

【问题讨论】:

    标签: java callback message-queue mqtt mosquitto


    【解决方案1】:

    不,一旦传递给客户端,一条消息就完全从 MQTT 系统中消失了。

    您可以在 MQTT 客户端应用程序中构建任何存储和重试逻辑,以处理下游系统中的任何故障。

    【讨论】:

    • 好的,我明白了...有什么建议吗?可能重新回到主题?
    • 不,这将立即将消息重新传递给客户端,如果 SOAP 端点关闭,它将循环。这完全取决于不丢失消息和消息传递率的重要性
    • 投递率可以相当宽松,每 5 分钟追赶一次,甚至可以容忍 60 分钟,但不会丢失消息。
    猜你喜欢
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 2011-10-28
    • 2017-06-04
    • 2017-06-17
    • 2018-04-09
    • 2022-12-31
    • 1970-01-01
    相关资源
    最近更新 更多