Я пытаюсь получить статистику подписки для своей темы из встроенного ActiveMQ с помощью теста JUnit. Я могу подписаться на эту тему, отправить сообщение на эту тему и получить это сообщение в своем слушателе/подписчике.Не удается получить встроенное статистическое сообщение ActiveMQ
Однако, когда я пытаюсь получить статистику из этого ActiveMQ, потребитель получает время. И если я не добавлю «receiveTimeout», чем потребитель ждет неопределенно долго для сообщения. Вот мой код для статистики:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
connectionFactory.setStatsEnabled(true);
Connection connection = connectionFactory.createConnection();
connection.setClientID(format("ActiveMqStatistics-%s", System.nanoTime()));
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue replyTo = session.createTemporaryQueue();
MessageConsumer consumer = session.createConsumer(replyTo);
String queueName = "ActiveMQ.Statistics.Subscription";
Queue testQueue = session.createQueue(queueName);
MessageProducer producer = session.createProducer(testQueue);
Message msg = session.createMessage();
msg.setJMSReplyTo(replyTo);
producer.send(msg);
System.out.println("Statistics request sent. Waiting to receive reply...");
long receiveTimeout = 5000L;
MapMessage reply = (MapMessage) consumer.receive(receiveTimeout);
assertNotNull(reply);
for (Enumeration e = reply.getMapNames();e.hasMoreElements();) {
String name = e.nextElement().toString();
System.out.println(name + "=" + reply.getObject(name));
}
connection.close();
Я получаю отказ утверждения, потому что «ответ» равен нулю.
Любые идеи?
У вас есть StatisticBrokerPlugin, установленный в вашем брокере? –
Tim: Нет, я использую виртуальный встроенный activemq, т. Е. URL-адрес брокера: «vm: // localhost? Broker.persistent = false». На основе документации (http://activemq.apache.org/statisticsplugin.html) это должно поддерживаться. – Gul