【问题标题】:How to get count consumers in queue Apache.NMS如何在队列 Apache.NMS 中获取消费者数量
【发布时间】:2017-05-11 06:01:16
【问题描述】:

我正在使用 ActiveMQ 通过 C# 应用程序发送和接收消息。我的队列名称是 “到服务器”。如何获得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);

【问题讨论】:

    标签: c# apache-nms


    【解决方案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));
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-01
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 2015-10-08
      相关资源
      最近更新 更多