2

我正在使用 ActiveMQ 使用 C# 应用程序发送和接收消息。我的队列名称是“ToServer”。如何获得count消费者?谢谢。

var factory = new NMSConnectionFactory("activemq:tcp://" + _address + ":" + 
_port);
_connection = factory.CreateConnection();
_connection.Start();
_session = _connection.CreateSession(AcknowledgementMode.AutoAcknowledge);
var destenation = SessionUtil.GetDestination(_session, "ToServer");
_messageProducer = _session.CreateProducer(destenation);
4

1 回答 1

-1

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));
}
于 2017-05-10T22:01:16.060 回答