我有一个iOS客户端,通过STOMP协议连接到几个ActiveMQ主题和队列。当我连接到服务器时,我发送以下消息:
2012-10-30 10:19:29,757 [MQ NIO Worker 2] TRACE StompIO
CONNECT
passcode:*****
login:system
2012-10-30 10:19:29,758 [MQ NIO Worker 2] DEBUG ProtocolConverter
2012-10-30 10:19:29,775 [MQ NIO Worker 2] TRACE StompIO
CONNECTED
heart-beat:0,0
session:ID:mbp.local-0123456789
server:ActiveMQ/5.6.0
version:1.0
然后,我使用以下消息订阅了几个主题:
2012-10-30 10:19:31,028 [MQ NIO Worker 2] TRACE StompIO
SUBSCRIBE
activemq.subscriptionName:user@mail.com-/topic/SPOT.SPOTCODE
activemq.prefetchSize:1
activemq.dispatchAsync:true
destination:/topic/SPOT.SPOTCODE
client-id:1234
activemq.retroactive:true
我在使用ActiveMQ服务器时遇到两个问题。每次我连接时,Web界面中的Number of Consumers
列都会增加,所以我只有一个真正的消费者,但计数大约是50个消费者。但最棘手的问题是,当我将另一台iOS设备插入笔记本电脑以测试消息环境时,连接到ActiveMQ时出现以下错误:
WARN | Async error occurred: javax.jms.JMSException: Durable consumer is in use for client: ID:mbp.local-0123456789 and subscriptionName: user@mail.com-/topic/SPOT.SPOTCODE
这似乎是通过STOMP与ActiveMQ断开连接不起作用,因为当其他设备未运行应用程序时会进行此日志记录尝试。为了解决这个问题,我尝试了以下方法:
我目前正在使用v5.6.0在我的笔记本电脑上执行服务器。
答案 0 :(得分:3)
如果您阅读ActiveMQ网站上的STOMP页面,您会注意到client-id和activemq-subscriptionName必须匹配才能使用STOMP持久订阅者。对于每个客户,这些值应该是不同的,否则由于名称冲突,您将看到相同的错误。