埋め込み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();
「返信」がnullのため、アサーションエラーが発生します。
アイデア?
ブローカにStatisticBrokerPluginがインストールされていますか? –
Tim:いいえ、私は仮想組み込みactivemqを使用しています。つまり、ブローカーURLは "vm:// localhost?broker.persistent = false"です。ドキュメント(http://activemq.apache.org/statisticsplugin.html)に基づいて、これはサポートされるべきです。 – Gul