【发布时间】:2015-01-21 05:01:37
【问题描述】:
我正在使用默认的 ActiveMQ(版本 5.10.0)配置,该配置应该将消息保存到磁盘。
当我在一个主题上发布一些消息时,关闭activemq,重新启动它然后启动消费者,消费者没有收到消息。
这里有详细的说明。
- 我使用 REST 接口为主题 X 订阅消费者。
- 我使用 REST 发布关于主题 X 的消息
- 我关闭了 ActiveMQ,然后重新启动它。
- 我启动了一个消费者来接收关于主题 X 的消息。没有收到任何内容。
那么,我发送的消息发生了什么?
我用于发布的命令:
curl -u admin:admin -d "body=test" "http://localhost:8161/api/message/erdata" -d type=topic
订阅命令:
wget --user admin --password admin --save-cookies cookies.txt --load-cookies cookies.txt --keep-session-cookies "http://localhost:8161/api/message/erdata?type=topic&clientId=consumer"
更新
根据 Erik 的回答,我尝试使用虚拟主题。 我已将以下代码添加到 activemq.xml:
<destinationInterceptors>
<virtualDestinationInterceptor>
<virtualDestinations>
<virtualTopic name=">" prefix="VirtualTopicConsumers.*." selectorAware="false"/>
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptors>
我还更改了发布和消费的命令。
用于发布的新命令:
curl -u admin:admin -d "body=val1" "http://localhost:8161/api/message/VirtualTopic/erdata" -d type=topic
新的消费命令:
wget --user admin --password admin --save-cookies cookies.txt --load-cookies cookies.txt --keep-session-cookies "http://localhost:8161/api/message/Consumer/A/VirtualTopic/erdata?type=queue&clientId=A"
现在的问题是我什至没有在消费者中收到任何消息。 hawtio 告诉我,我有一个主题 VirtualTopic.erdata,其中有 0 个消费者,4 条消息入队,0 条出队和 0 条分派消息。有一个队列 Consumer.A.VirtualTopic.erdata 有 1 个消费者,但有 0 个已入队、已分派和已出队的消息。我在这里做错了什么?
格雷戈
【问题讨论】: