2017-10-20 262 views
0

我正在使用ActiveMq嵌入式代理。我正在使用pub/sub模型。我有多个订阅该主题的听众。我正在使用默认消息侦听器容器。一个主题的多个监听器如何在Activemq中工作?

所以我开始的话题和用户的统计数据。

用于主题的消息的数目的统计始终为零

DestinationStatistics statistics = destination 
         .getDestinationStatistics(); 
    LOG.info("The message count in topic is" + destination.getMessages().count()) 

就我看到的,'主题中的消息数总是零'。 所以现在我得到了消费者到目的地的统计数据。目的地是我正在使用的主题。

Iterator<Subscription> it = destination.getConsumers().iterator(); 
    while(it.hasNext()){ 
    Subscription s= it.next(); 
    LOG.info(s.getPendingQueueSize()+ ""+ s.getEnqueueCounter()+""+s.getDequeueCounter()) 
    } 

我看到每个消费者的这些统计信息反映了我作为pub/sub的一部分发送的消息。

那么整个过程如何工作呢?

我发布一条消息,经纪人立即推动信息给用户,订户保持各自的消费者的信息。 因此,主题中的消息数总是零,并且每个消费者的统计信息都会提供代理收到的消息的概念。

有人可以解释的过程中,应如何统计工作的?

+0

你是主题自动确认?如果是这样,那么它会立即将所有消息发送给消费者。如果您的主题持久且消费者未运行,那么您应该看到有关该主题的消息。 – dmossakowski

回答

0

一个话题只是一个地址。它不能保存消息,只需向订阅者发送消息。因此,它没有消息计数。

订阅者可以通过之前的消费者所消耗一段时间举行的消息。

你可以看到有关的话题入队的消息的数量统计,以及等待使用任一ActiveMQ的Web控制台或通过JMX /椒API被分派邮件的数量。