1

我有一个 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 服务器的两个问题。每次连接时,Number of ConsumersWeb 界面中的列都会增加,所以我只有一个真正的消费者,但数量大约是 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 在我的笔记本电脑上执行服务器。

4

1 回答 1

3

如果您阅读 ActiveMQ 站点上的STOMP页面,您会注意到 client-id 和 activemq-subscriptionName 必须匹配才能使用 STOMP 持久订阅者。对于每个客户,这些值应该不同,否则由于名称冲突,您将看到相同的错误。

于 2012-10-30T20:16:33.173 回答