簡體   English   中英

RabbitMQ - 主題交流和競爭消費者

[英]RabbitMQ - Topic Exchanges and Competing Consumers

我成功設置了一個主題交換,我能夠一次向幾個消費者傳遞消息。

我還想向競爭消費者傳遞信息並繼續使用主題交換。 我讀到使用相同的隊列名稱使消費者能夠競爭消息。 然而,我可能會弄錯,因為我無法使其發揮作用。

針對同一主題的多個偵聽器的設置:

  • 聲明主題交換
  • 對於每個偵聽器,聲明具有自動生成名稱的新隊列
  • 使用給定的主題路由鍵將此隊列綁定到上述交換

如何將競爭消費者設置為同一主題?

甚至可以使用Topic Exchanges嗎?

謝謝。

我們首先回顧幾點。

首先,請記住,在RabbitMQ中,您總是從隊列中消耗。 交換只是您的門戶,您無法直接使用它們。

其次, 主題交換允許使用路由鍵“模式”綁定隊列。 因此,術語主題在“主題交換”的上下文中有效。

現在這是我從你的問題中理解的:

多個使用者/相同的路由密鑰 :這是您希望多個使用者都使用相同路由密鑰(或主題交換中的相同路由密鑰模式)消費的地方。 這實際上是可行的。 這樣做:

  1. 聲明您的主題交換
  2. 聲明具有某個名稱的隊列
  3. 使用所需的路由密鑰模式將該隊列綁定到您的主題
  4. 創建多個使用者並讓他們監聽同一個隊列。

會發生什么是RabbitMQ將在循環問題中為您的消費者帶來負載平衡。 這意味着所有消費者將使用相同的隊列。 但請記住,在這種情況下,理論上可能會多次傳遞單個消息。

你正在做的是創建多個隊列,每個隊列有一個消費者。 這意味着進入交換的每條消息都將在所有隊列中重復。 最終結果是消息被多次處理。

我通過使用交換到交換綁定解決了這個問題。

  1. 外部交換是一個主題交換。
  2. 內部交換是綁定到客戶端命名隊列的扇出交換。
  3. 外部交換機使用包含通配符的路由密鑰綁定到內部交換機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM