2016-09-20 16 views
1

我正計劃一個「消費者意識」服務,只有當該主題上至少有一個消費者時纔會處理某些類型的信息。使用Spring,我能夠創建下面的代碼來監控,當消費者連接或斷開由一個主題:使用ActiveMQ,可以強制代理重新發送建議消息?

@JmsListener(destination = "ActiveMQ.Advisory.Consumer.>") 
public void processaConsumidorConectado(Message message){ 
    System.out.println("Registrou um consumidor"); 
} 

那如果以後我註冊這個話題發生,則效果很好。但是在我註冊這個聽衆之前,可能會發生這樣的情況,我已經在某個主題中擁有了一個消費者

有沒有辦法強制activeMQ發送一個話題的所有諮詢信息或類似的東西?

回答

1

我認爲它可能與追溯消費者,但我沒有測試這個或與駱駝路線複製到另一個主題的消息。 我不知道這是否符合您的beeds但如果您收到有關此主題相關的消息,您可以訂閱

ActiveMQ.Advisory.NoConsumer.Topic.YourTopic 

這意味着消費者沒有連接

http://activemq.apache.org/retroactive-consumer.html

+0

謝謝!我會在這裏測試和回覆 –

+0

您可以發送一條測試消息到您的主題,並在此之前收聽'ActiveMQ.Advisory.NoConsumer.Topic.YourTopic',如果消息是非持久性的,並且如果沒有消費者連接,您將收到你的消息@ NoConsumers話題 –

1
  1. 跟蹤通過公告活躍用戶將是非常片狀。您可能應該連接到JMX並查看是否有活躍的消費者。

  2. 您可以訂閱添加到您想要諮詢的話題,或使用通配符匹配分組圖案,如主題://ActiveMQ.Advisory.Consumer>

友好免責聲明 - 一般來說,只有在消費者存在的情況下設計才能發送消息是一種競爭條件,而且我通常會建議不要這麼做......消費者在發送後會立即消失。

編輯:正確#2反映持久訂閱不適用於諮詢主題

+0

這是可能的**持久訂閱諮詢** –

+0

是的。諮詢主題只是普通話題。照常創建持久訂閱。 –

+0

我從我的回覆中刪除了這個,因爲我從來沒有測試過這個,看過這篇文章,也許這個功能後添加http://stackoverflow.com/questions/17488272/activemq-how-to-create-subscriber-for-activemq-advisory-連接主題 –

相關問題