代码之家  ›  专栏  ›  技术社区  ›  Kannan Ekanath

使用localhost vm创建的activemq不会创建jmx bean

  •  1
  • Kannan Ekanath  · 技术社区  · 15 年前

    这个问题来自 here 但可以是一个完全独立的问题。

    我用Spring2.5.2和ActiveMQ5.2.0进行了单元测试。我使用“vm://localhost”创建一个代理(usejmx为true),向“mytopic1”发送几条消息,打开一个jconsole到这个进程,然后在org.apache.activemq->localhost->topic->activemq.advisory.producer.queue.mytopic1下看到MBeans。这是咨询主题(生产者/消费者加入时)。但我看不到一个MBean专门为mytopic1本身服务。

    当我单独运行ActuMeq并使用Java程序连接到它时,情况似乎并非如此。对于ex,我下载了activemq 5.2.0,将activemq.xml修改为使用createConnector=true。我启动了ActiveMQ向“MyTopic1”发送了一条消息。我使用“localhost:1099”启动了jconsole connected to,在org.apache.activemq->localhost->topic->mytopic1下看到了一个jmx bean(除了咨询主题)。它的属性告诉我触发了多少条消息。

    我是不是错过了什么?为什么jmx bean不同于vm://localhost(内置代理创建)和本地启动的activemq服务器?

    1 回复  |  直到 15 年前
        1
  •  0
  •   Kannan Ekanath    15 年前

    显然只有我。线索在上面创建的“activemq.advisory.producer.queue.mytopic1”jmx中。我用了下面的签名,

    jmsTemplate.send("topic1", textMessage);
    

    现在我知道了,默认情况下,当我们使用字符串目的地名称时,Spring会将它发送到一个队列。所以“topic1”被视为队列名称(而不是主题)。我把代码改成

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

    现在它开始工作了。