我正在使用ActiveMQ使用C#应用程序发送和接收消息。我的队列名称是 “ToServer”。如何计算消费者? THX。
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);
答案 0 :(得分:-1)
JMS消息传递,一般而言,大多数消息传递涉及分离的资源,其中发送者不了解接收者,反之亦然。计算代码中的接收器通常意味着你做错了什么。如果你必须有一些方法,虽然在.NET和Java中的方式比较有限,因为你不能使用JMX。代理允许使用StatisticsBrokerPlugin,它允许您向特定队列上的代理发送控制消息,并获取有关代理中正在进行的各种事务的统计信息的回复。文档为here。
您的代码看起来类似于以下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));
}