2013-03-26 54 views
1

我有一个问题,通过使用fusesource代码发布mqtt消息到Apollo服务器。 我写的消息公布与如下代码消息不保留在Apollo服务器

connection.publish(topic, message.getBytes(),QoS.AT_LEAST_ONCE, true); 

我也写了赞同这样的话题消息消费者。如果我首先启动消费者,然后启动发布者,则消费者可以正确获取所有消息。但是,如果我首先启动发布者,然后再启动消费者,则消费者将不会收到消息。 另外,我进入Apollo管理控制台,我无法在队列中找到任何消息。 (请参阅附件截图)。

我该怎么办才能解决这个问题?我无法让我的客户一直在运行,而且我也不想失去发布商的任何消息。经纪人(阿波罗)不应该在消费者离线时保留所有消息吗?如果是的话,我怎么看不到它?

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

+0

你使用的是什么版本的阿波罗? – 2013-04-25 13:43:43

回答

0

这看起来像一个错误,因为您已将邮件标记为保留。但是,我不知道阿波罗如何处理一个主题上的多个保留​​消息。你可能想在他们的邮件列表中提出这个问题。

+0

对于某个主题,只保留带有保留标志的最后一条消息。 https://activemq.apache.org/apollo/documentation/mqtt-manual.html#Topic_Retained_Messages – 2014-07-18 10:10:32

2

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

<topic auto_delete_after="0"/> 

阿波罗的未来版本将避免当持有保留的消息APLO-319删除的话题。