我正在使用Glassfish 3.1.2,並設置了一個節點和兩個實例的集羣。Glassfish - 如何將JMS消息廣播到羣集中的所有實例?
我的應用程序中有一個消息驅動bean,它訂閱了我部署到羣集的主題。
當我向該主題發佈消息時,我希望這兩個實例都能收到該消息。
但是,在實踐中,我發現只有一個實例接收到消息。
我相信我遇到了一個名爲「共享訂閱」 http://docs.oracle.com/cd/E18930_01/html/821-2438/gjzpg.html#MQAGgjzpg
的功能(該功能默認啓用)功能說,與同一個客戶端ID集羣中的bean是共享,並有效地僅一個訂閱。
它說,默認情況下,MDB的客戶端ID是它的名稱,這意味着我的兩個實例都使用相同的客戶端ID。
因此,除了完全禁用此功能外,我想知道是否可以設置MDB,以便每個實例使用不同的客戶端ID進行訂閱?這似乎有點棘手,因爲兩個實例都使用相同的WAR文件。我認爲你可以在註釋中設置客戶端ID,但我不確定這是否可以在運行時更改...
謝謝,但我不知道怎麼去訪問MDB的底層連接,也沒怎麼設置的ActivationSpec屬性(可以這樣使用註釋做了什麼?)我BTW現在的做法它的作用是使用下面的註解:@ActivationConfigProperty(propertyName =「clientID」,propertyValue =「$ {com.sun.aas.instanceName}」)這似乎爲每個實例設置了不同的客戶端ID。 – Darren 2013-03-08 14:29:02