2010-02-24 60 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); 

它现在工作。