2010-09-22 27 views
3

我在ActiveMQ上的持久客戶端存在問題。我在Python中使用stomp.py。基於stomp.py的持久客戶端填充ActiveMQ中的訂戶列表

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 ....」。

問題是,我每次斷開基於stomp.py的客戶端時,下一次再次連接時會得到一個新的「clientId」。這會導致ActiveMQ中的用戶列表填滿: alt text (上圖顯示了我的ActiveMQ代理上的用戶,下次斷開連接後,上面的條目仍然保留,另一個將被添加。很快我在列表中有很多用戶)。

奇怪的是,選擇器工作100%(我確認通過將<>更改爲=,以便消息回到我),所以clientId必須是以某種方式工作。

回答

3

我解決了它,整件事都是由於一個簡單的拼寫錯誤。該行:

conn.connect(wait=True, header = {'client-id': 'myhostname' }) 

應包含複數形式的'標題'。

+0

看起來他們在更高版本中修復了這個問題。 kwarg現在是「標題」 – grinch 2015-02-03 15:40:17