ActiveMQ, созданный с помощью локальной виртуальной машины, не создает компоненты JMX - PullRequest
1 голос
/ 24 февраля 2010

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

У меня есть модульный тест с Spring 2.5.2 и activemq 5.2.0. Я создаю брокер (useJmx имеет значение true) с помощью «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 в org.apache.activemq -> localhost -> Topic -> myTopic1 (в дополнение к теме рекомендаций). У этого были атрибуты, чтобы сказать мне, сколько сообщений запущено.

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

1 Ответ

0 голосов
/ 26 февраля 2010

Видимо, это был только я. Подсказка была в 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);

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

...