2012-10-30 72 views
1

我有一個iOS客戶端,它通過STOMP協議連接到多個ActiveMQ主題和隊列。當我連接到服務器,我發送以下信息:ActiveMQ持久使用者通過STOMP爲客戶端和subscriptionName使用

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-
server:ActiveMQ/5.6.0 
version:1.0 

然後,我訂閱使用下面的消息幾個主題:

2012-10-30 10:19:31,028 [MQ NIO Worker 2] TRACE StompIO 
SUBSCRIBE 
activemq.subscriptionName:[email protected]/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-and subscriptionName: [email protected]/topic/SPOT.SPOTCODE 

這似乎是從ActiveMQ的斷開通過STOMP是不能正常工作,因爲這種日誌記錄嘗試是在其他設備未運行應用程序時進行的。爲了解決這個問題,我嘗試了以下幾件事:

  • 嘗試訂閱主題時始終註銷。
  • 訂閱

我目前使用V5.6.0執行我的筆記本電腦服務器。

+0

我在kms iOS客戶端從哪裏入手?任何鏈接?或演示代碼? – Tornado

回答

3

如果您閱讀了ActiveMQ站點上的​​3210頁面,您將注意到client-id和activemq-subscriptionName必須匹配以便使用STOMP持久訂閱者。這些值對於你們每個客戶的應該是不同的,否則由於姓名衝突你會看到相同的錯誤。

+0

但是,我正在使用'activemq.retroactive'作爲'True'來使用非持久性主題,正如在STOMP頁面中所說的:_對於非持久性主題使此訂閱追溯._這個標誌是否足以使訂閱者不耐用? – amb

+2

要使它不耐用,請不要設置activemq.subscriptionName標題,否則它總會試圖使其持久。 –