我在ActiveMQ上遇到了一个持久客户端的问题。我在Python中使用stomp.py。
conn.start()
conn.connect(wait=True, header = {'client-id': 'myhostname' })
conn.subscribe(
'/topic/testTopic', ack='auto',
headers = {
'activemq.subscriptionName': 'myhostname',
'selector': "clientid <> '%s'" % 'myhostname'
}
)正如您从我的代码中看到的,我正在将我的clientId设置为我自己的主机名。如下面所附的屏幕截图所示,clientId显示的内容类似于“ID:Atlas.”。
问题是,每次我断开基于STOp.py的客户端连接时,下次再次连接时,我都会得到一个新的"clientId“。这将导致ActiveMQ中的订阅者列表填满:

(上面的图片显示了我的ActiveMQ代理上的一个订阅者。下一次,当我断开连接,然后连接,上面的条目仍将保留,另一个将被添加。很快我就有了很多订阅者)。
奇怪的是,选择器可以工作100% (我通过将<>更改为be =来验证这一点,以便消息返回给我),所以clientId必须以某种方式工作。
发布于 2010-09-25 20:17:19
我解决了,整件事都是因为一个简单的拼写错误。这句话:
conn.connect(wait=True, header = {'client-id': 'myhostname' })应该包含复数形式的“标头”。
https://stackoverflow.com/questions/3774152
复制相似问题