gpt4 book ai didi

c# - 如何获取队列 Apache.NMS 中的消费者数量

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:54 24 4
gpt4 key购买 nike

我使用 ActiveMQ 通过 C# 应用发送和接收消息。我的队列名称是“到服务器”。如何统计消费者?谢谢。

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);

最佳答案

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));
}

关于c# - 如何获取队列 Apache.NMS 中的消费者数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43685295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com