ActiveMQ, созданный с помощью localhost VM, не создает JMX Beans

Этот вопрос исходит от здесь, но может быть совершенно независимым вопросом.

У меня есть модульный тест с Spring 2.5.2 и activemq 5.2.0. Я создаю брокера (useJmx истинно), используя «vm: // localhost», отправляю пару сообщений на «myTopic1», открываю jconsole для этого процесса, и я вижу MBeans в org.apache.activemq -> localhost -> Topic - > ActiveMQ.Advisory.Producer.Queue.myTopic1. Это рекомендательная тема (когда присоединяется производитель / потребитель). Но я не вижу MBean, предназначенного для самого myTopic1.

Это не похоже на тот случай, когда я запускаю activemq отдельно и использую свою программу Java для подключения к нему. Например, я загрузил ActiveMQ 5.2.0 и изменил activemq.xml на использование createConnector = true. Я запустил activeMQ и отправил сообщение на «myTopic1». Я запустил jconsole, подключенный к "localhost: 1099", и увидел JMX Bean в org.apache.activemq -> localhost -> Topic -> myTopic1 (в дополнение к теме с рекомендациями). У этого были атрибуты, чтобы сказать мне, сколько сообщений запущено.

Я что-то упустил? Почему bean-компоненты JMX отличаются от vm: // localhost (создание встроенного брокера) на сервер activemq, запущенный локально?


person Kannan Ekanath    schedule 24.02.2010    source источник


Ответы (1)


Видимо это был только я. Подсказка была в созданном выше JMX "ActiveMQ.Advisory.Producer.Queue.myTopic1". Я использовал следующую подпись,

jmsTemplate.send("topic1", textMessage);

И теперь я знаю, что Spring по умолчанию отправляет его в QUEUE, когда мы используем имя назначения String. Таким образом, «topic1» рассматривалось как имя очереди (а не как тема). Я изменил код как

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

и теперь это работает.

person Kannan Ekanath    schedule 26.02.2010