我正在使用的Weblogic應用程序服務器是集羣的。我創建了一個JMS隊列,它有一個JNDI名稱。當消費者查找jndi名稱並將該事件發佈到隊列中時,它是否會在兩個應用服務器中創建的隊列中發佈?相同的MDB將在兩臺服務器上運行 - 哪一個會將消息發佈到隊列中?如果我需要刪除放在隊列中的消息,是否應該遍歷所有節點並刪除消息?JMS和Weblogic集羣
謝謝。
我正在使用的Weblogic應用程序服務器是集羣的。我創建了一個JMS隊列,它有一個JNDI名稱。當消費者查找jndi名稱並將該事件發佈到隊列中時,它是否會在兩個應用服務器中創建的隊列中發佈?相同的MDB將在兩臺服務器上運行 - 哪一個會將消息發佈到隊列中?如果我需要刪除放在隊列中的消息,是否應該遍歷所有節點並刪除消息?JMS和Weblogic集羣
謝謝。
使用隊列意味着消息是保證準確消耗一次。這意味着消息將被傳送到兩個節點,但是其中一個節點只會全局處理一次。 WebLogic處理羣集中的節點之間的同步和協調,以同時保證交付,但確保它在全局範圍內處理一次。
這與主題形成對比,其中每個用戶都獲取該消息的副本。每個消息將由每個訂閱者處理一次。
您不需要遍歷節點來刪除消息......只需在隊列中抓取一個jndi引用並在任何消費者使用之前刪除該消息。
你不會說在Weblogic中爲此創建的隊列類型。對於集羣環境,最好使用DistributedQueue,而不是標準Queue。我相信它可以讓Weblogic更好地處理當集羣中的某個節點出現故障時如何處理隊列中的消息。也可以選擇查看隊列的內容並從Weblogic管理控制檯刪除消息。
您可以發佈JMS模塊XML配置嗎? – fglez 2012-04-20 15:54:36