【问题标题】:ActiveMQ Durable consumer is in use for client and subscriptionName via STOMPActiveMQ 持久消费者正在通过 STOMP 用于客户端和订阅名称
【发布时间】:2012-10-19 16:59:09
【问题描述】:

我有一个 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 在笔记本电脑上执行服务器。

【问题讨论】:

  • 我在 kms iOS 客户端工作,从哪里开始?任何链接?还是演示代码?

标签: apache activemq stomp


【解决方案1】:

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

【讨论】:

  • 但我使用activemq.retroactive 作为True 来使用非持久主题,如STOMP 页面中所述:对于非持久主题,使此订阅具有追溯性。这个标志是否足以使订阅者不持久?
  • 要使其不耐用,请不要设置 activemq.subscriptionName 标头,否则它总是会尝试使其耐用。
猜你喜欢
  • 2017-02-20
  • 2017-01-24
  • 2016-11-09
  • 2011-04-16
  • 1970-01-01
  • 2014-10-12
  • 2013-01-16
  • 2015-08-24
  • 2016-01-14
相关资源
最近更新 更多