2012-06-25 26 views
1

我讀了hornetQ文檔,困惑了很多。有人可以給出一個確切的例子來在hornetQ中創建一個JMS主題。我的意思是hornetq-jms.xmlhornetq-configuration.xml中的xml配置。假設我們有一個名爲top的主題和2個訂戶:sub1,sub2。我得到的是我們應該定義兩個隊列(每個用戶一個隊列)並將它們綁定到實際上是主題名稱的地址,但是用戶如何知道他們應該連接到哪個隊列?(他們只知道主題名稱)JMS主題在HornetQ中的確切示例

+0

你應該接受答案。有人免費給你做了一些工作,你至少可以給他提供他給你的答案的要點。 –

回答

6

我認爲HornetQ處理內部問題的方式與JMS規範描述主題的方式形成了鮮明對比,令您感到困惑。

讓我們從JMS規範開始。在這裏,您有一個主題,其中n個訂閱者可以收聽消息,這些消息將由客戶端發佈。在JMS中,我們只談論單數的目的地,例如。我們將分別發送消息主題或隊列。

HornetQ是一個JMS提供者 - 一個實現了JMS規範的服務器,所以Java客戶端可以連接它並使用JMS-API。 JMS提供程序可能會更改,但是在使用其他JMS提供程序時,該代碼仍然可以工作。

但是,HornetQ並沒有在內部區分目的地(主題或隊列),因爲它試圖成爲通用消息中間件。在HornetQ中,所有主題或隊列都以「地址」和「隊列」的形式實現。當你使用HornetQ API(CoreAPI)而不是JMS-API時,你必須處理這些事情。您應該閱讀HornetQ documentation中的地址部分:

在覈心中,沒有主題的概念,主題是僅用於JMS的術語。相反,在覈心,我們只處理地址和隊列。

例如,JMS主題將由單個地址實現到 ,許多隊列被綁定。每個隊列代表訂閱 的主題。 JMS隊列將作爲單個地址實現到 哪一個隊列被綁定 - 該隊列表示JMS隊列。

有關如何通過HornetQ使用JMS主題的示例,我強烈建議使用HornetQ自帶的示例。在加載並提取hornetq存檔後,只需轉至examples/jms/topic目錄並查看readme.html以簡要了解如何實施以及如何執行示例(mvn verify)。

+1

+1 ... Majid Azimi令JMS Concepts與核心概念混淆不清。他所要做的就是將其添加到hornetq-jms.xml中 –