JMS 消息传递和一般大多数消息传递都涉及分离的资源,其中发送者不知道接收者,反之亦然。计算代码中的接收者通常意味着你做错了什么。如果你必须,虽然有一些方法,但在 .NET 与 Java 中的方法更有限,因为你不能使用 JMX。代理允许使用 StatisticsBrokerPlugin,它允许您向特定队列上的代理发送控制消息,并获得有关代理中发生的各种事情的统计信息的回复。文档在这里。
您的代码将类似于以下 Java 示例。
Queue replyTo = session.createTemporaryQueue();
MessageConsumer consumer = session.createConsumer(replyTo);
Queue testQueue = session.createQueue("TEST.FOO");
MessageProducer producer = session.createProducer(null);
String queueName = "ActiveMQ.Statistics.Destination." + testQueue.getQueueName()
Queue query = session.createQueue(queueName);
Message msg = session.createMessage();
producer.send(testQueue, msg)
msg.setJMSReplyTo(replyTo);
producer.send(query, msg);
MapMessage reply = (MapMessage) consumer.receive();
assertNotNull(reply);
assertTrue(reply.getMapNames().hasMoreElements());
for (Enumeration e = reply.getMapNames();e.hasMoreElements();) {
String name = e.nextElement().toString();
System.err.println(name + "=" + reply.getObject(name));
}