【问题标题】:Is it possible to send a message to the future?是否可以向未来发送消息?
【发布时间】:2016-06-16 08:57:25
【问题描述】:

是否有使用 MQTT 发布计划/延迟消息的最佳做法,例如,使用 Mosquitto 或 HiveMQ 代理?

用例是:告诉订阅者在 15 分钟内执行一些维护。

最好通过发布消息“请立即执行维护”来解决用例,并在消息中标记“不早于 15 分钟后交付”。

【问题讨论】:

    标签: mqtt mosquitto hivemq


    【解决方案1】:

    虽然我不建议在任何具有高吞吐量的情况下这样做,但至少使用 HiveMQ 您可以执行以下操作:

    1. 实现OnPublishReceivedCallback
    2. 将使用PublishService 的Runnable 调度到某种共享的ScheduledExecutorService。 Runnable 通过 PublishService 重新发布发布
    3. OnPublishReceivedCallback 需要通过抛出 OnPublishReceivedException 来丢弃原始发布(使用 false 作为构造函数参数,这样您就不会断开发布客户端)

    【讨论】:

      【解决方案2】:

      不,订阅主题的所有已连接客户端会立即发送消息,并在重新连接时为具有持久订阅的已断开连接的客户端发送消息。

      如果您想处理延迟消息,则必须在将它们发布到代理之前实现自己的存储和转发机制。

      【讨论】:

        猜你喜欢
        • 2018-12-16
        • 2015-01-29
        • 2012-08-05
        • 2013-01-18
        • 2013-04-30
        • 1970-01-01
        • 2020-10-26
        • 2020-08-11
        • 1970-01-01
        相关资源
        最近更新 更多