簡體   English   中英

jms 2共享訂戶

[英]jms 2 shared subscriber

我一直在我們的應用程序中看到一些問題,即使應用程序的兩個實例使用createSharedConsumer創建並具有相同的訂閱名稱,它們的使用者也收到相同的消息。

起初,我以為這可能是我們的應用程序或使用SpringJMS的方式,所以我創建了一個示例應用程序,該示例應用程序創建了3個連接工廠。 然后使用這些工廠創建發送到主題的消息,並在同一應用程序中創建兩個偵聽器(但由於它們使用不同的連接工廠和客戶端ID,因此它們應完全分開),但兩個連接的兩個消息偵聽器仍在接收中消息。

我已經嘗試對HornetQ和Tibco進行此操作,並獲得相同的結果。

在實現MessageListener的類中按以下方式創建的消息使用者

Connection connection = factory.createConnection(userName, password);
Session session = connection.createSession();
MessageConsumer topicReceiver = session.createSharedConsumer(topic, SUBSCRIPTION_NAME);
topicReceiver.setMessageListener(this);
connection.start();

成功使用過JMS 2.0共享用戶的人是否向我指出了我所缺少的方向?

看起來我應該有RTFM。 根據JMS 2.0規范:

共享的非持久訂閱由客戶端指定的名稱和客戶端標識符(如果已設置)標識。如果在首次創建共享的非持久訂閱時設置了客戶端標識符,則客戶端隨后希望創建使用者在該共享的非持久訂閱上,必須使用相同的客戶端標識符。

因此,由於多個客戶端不能具有相同的客戶端標識符,因此,如果您希望使用共享訂閱(持久或非持久),則不應設置客戶端標識符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM