2010-02-24 62 views
1

這個問題來自here,但可以是一個完全獨立的問題。用localhost虛擬機創建的ActiveMQ不會創建JMX豆

我有一個單元測試Spring 2.5.2和activemq 5.2.0。我使用「vm:// localhost」創建了一個代理(useJmx爲true),向「myTopic1」發送了一些消息,併爲此進程打開了一個jconsole,並在org.apache.activemq下看到了MBean - > localhost - > Topic - > ActiveMQ.Advisory.Producer.Queue.myTopic1。這是諮詢主題(生產者/消費者加入時)。但是我沒有看到MBean專用於myTopic1本身。

這似乎並不是這樣,當我單獨運行activemq並使用我的Java程序連接到它。例如,我下載的ActiveMQ 5.2.0將activemq.xml改爲使用createConnector = true。我啓動了activeMQ發送消息給「myTopic1」。我使用「localhost:1099」連接了jconsole,並在org.apache.activemq-> localhost - > Topic - > myTopic1下面看到了一個JMX Bean(除了諮詢主題)。這有屬性告訴我有多少消息被觸發。

我在這裏錯過了什麼嗎?爲什麼JMX bean與vm:// localhost(內置代理創建)不同,本地啓動到activemq服務器?

回答

0

顯然這只是我。線索在上面創建的「ActiveMQ.Advisory.Producer.Queue.myTopic1」JMX中。我用下面的簽名,

jmsTemplate.send("topic1", textMessage); 

現在我知道,春天默認情況下它發送到隊列時,我們使用一個String目的地名稱。所以「topic1」被視爲隊列名稱(而不是主題)。我改變了代碼爲

Topic topic = //physically look up the topic 
jmsTemplate.send(topic, textMessage); 

它現在工作。