2010-02-24 2 views
1

이 질문은 here에서 비롯되었지만 완전히 독립적 인 질문 일 수 있습니다.localhost VM으로 작성된 ActiveMQ가 JMX Beans를 생성하지 않음

나는 스프링 2.5.2와 액티브 5.2.0의 단위 테스트를 가지고있다. "vm : // localhost"를 사용하여 브로커 (useJmx가 true)를 작성하고 "myTopic1"에 대한 몇 개의 메시지를 발생시켜이 프로세스에 대한 jconsole을 열고 org.apache.activemq -> localhost -> Topic - > ActiveMQ.Advisory.Producer.Queue.myTopic1. 이것이 권고 주제입니다 (생산자/소비자가 참여할 때). 그러나 myTopic1 자체를위한 MBean이 보이지 않습니다.

activemq를 별도로 실행하고 Java 프로그램을 사용하여 연결하는 경우에는 그렇지 않습니다. 예를 들어, ActiveMQ 5.2.0을 다운로드하여 createConnector = true를 사용하도록 activemq.xml을 변경했습니다. activeMQ가 "myTopic1"에게 메시지를 보냈습니다. 나는 "localhost : 1099"를 사용하여 jconsole을 연결하고 org.apache.activemq -> localhost -> Topic -> myTopic1 (Advisory 주제 외)에서 JMX Bean을 보았다. 이것은 얼마나 많은 메시지가 해고되는지 알려주는 속성을 가졌습니다.

여기에 뭔가가 있습니까? JMX beans와 vm : // localhost (inbuilt broker creation)가 activemq 서버와 다른 점은 왜 로컬에서 시작 되었습니까?

답변

0

분명히 저였습니다. 실마리는 위에 작성한 "ActiveMQ.Advisory.Producer.Queue.myTopic1"JMX에 있습니다. 나는

jmsTemplate.send("topic1", textMessage); 

을 다음과 같은 서명을 사용하고 있었다 그리고 지금은 우리가 문자열 대상 이름을 사용하는 경우 기본적으로 그 봄이 대기열로 전송 알고있다. 따라서 "topic1"은 대기열 이름으로 취급됩니다 (주제가 아님). 코드를

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

으로 변경했으며 현재 작동합니다.

관련 문제