是否有可能向未来发送消息?

时间:2016-06-16 08:57:25

标签: mqtt mosquitto hivemq

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

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

最理想的是,用例将通过发布消息“立即执行维护”来解决,并将消息标记为“从现在开始不超过15分钟”。

2 个答案:

答案 0 :(得分:3)

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

  1. 实施OnPublishReceivedCallback
  2. 将使用PublishService的Runnable安排到某种共享的ScheduledExecutorService。 Runnable通过PublishService
  3. 重新发布发布
  4. OnPublishReceivedCallback需要通过抛出OnPublishReceivedException(使用false作为构造函数参数,因此不要断开发布客户端)来丢弃原始发布。

答案 1 :(得分:2)

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

如果您想要发送延迟消息,则必须先将自己的存储转发机制实施,然后才能发布给代理。