2017-10-20 259 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被分派郵件的數量。