Mqtt 阿波罗服务器中未保留的邮件

Mqtt 阿波罗服务器中未保留的邮件,mqtt,apollo,Mqtt,Apollo,我使用fusesource代码将mqtt消息发布到Apollo服务器时遇到了一个问题。 我用如下代码编写了消息发布者 connection.publish(topic, message.getBytes(),QoS.AT_LEAST_ONCE, true); 我还写了一条消息,消费者订阅了这个主题。如果我先启动消费者,然后启动发布者,消费者可以正确获取所有消息。但是,如果我先启动发布者,然后启动消费者,消费者将不会收到消息。 另外,我进入Apollo管理控制台,在队列中找不到任何消息。(请参阅

我使用fusesource代码将mqtt消息发布到Apollo服务器时遇到了一个问题。 我用如下代码编写了消息发布者

connection.publish(topic, message.getBytes(),QoS.AT_LEAST_ONCE, true);
我还写了一条消息,消费者订阅了这个主题。如果我先启动消费者,然后启动发布者,消费者可以正确获取所有消息。但是,如果我先启动发布者,然后启动消费者,消费者将不会收到消息。 另外,我进入Apollo管理控制台,在队列中找不到任何消息。(请参阅所附的屏幕截图)

我应该如何解决此问题?我不能让我的消费者一直运行,我不想丢失出版商的任何消息。当消费者离线时,代理(Apollo)不应该保留所有消息吗?如果是的话,为什么我看不见呢


这似乎是一个愚蠢的问题,但我对MQTT非常陌生,我确实需要一些帮助。

这似乎是一个错误,因为您已将消息标记为保留。然而,我不知道阿波罗如何处理一个主题上的多条保留消息。您可能希望在他们的邮件列表中提出此问题。

我怀疑,一旦没有生产者或消费者附加到该主题,该主题将被自动删除。要禁用自动删除“功能”,请在apollo.XML中的virual_host config元素中添加以下XML元素:

<topic auto_delete_after="0"/>


阿波罗的未来版本将避免在保存保留消息时删除主题。

您使用的是哪一版本的阿波罗?只有带有保留标志的最后一条消息才会保留主题。