2017-10-17 77 views
1

我在後端有一個RabbitMQ應用程序。所以我想開發自定義的第三方分析代碼,它連接RabbitMQ上的應用程序隊列並收集數據。所以我的問題是我想確保應用程序和我的代碼不會從rabbitmq中丟失任何數據。想要在同一個RabbitMQ隊列上運行多個使用者

如果可能的話,我該如何配置RabbitMQ隊列?我有RabbitMQ的管理權限。 我希望,因爲我沒有訪問做應用程序代碼它不是生產問題的代碼

感謝您的幫助

回答

0

改變目前的匯率/隊列映射,以允許消息複製

在我們可以簡化現有生產者向現有交換機發送消息的時刻,該消息將消息路由到某個隊列,消息現在從該隊列消耗:

現在,你想要什麼有如下的設計,與新的消費消耗相同的消息:

[producer-app] ---> existing-exchange ---> existing-queue ---> [existing-consumer] 
             \--> new-queue --------> [your-consumer] 

您可能需要更改的existing-exchange配置,讓您的郵件複製 - 例如directfanout將創建每個隊列上的相同消息。

根據您的應用可能是很容易的,而不在生產商的變化來進行的,但你需要知道可能存在的缺陷的:

  • 製片人可能交流/隊列/綁定重新申報不時,如果當前狀態無法更改爲其請求(如果您更改交換的類型,則可能會發生這種情況),則會拋出異常
  • 您需要自行管理new-queue(最好來自消費者工件),因爲它將接收所有的信息;如果你的消費關閉,隊列不會消失,除非它是由異或具有TTL設置
+0

你好亞當 你有你的ASCII藝術基於推薦任何配置示例。我無法在這個環境中長時間停機,所以我必須在短時間內應用正確的解決方案 – user984074

相關問題