我想你需要看看RPC教程。從你的描述來看,這聽起來就是你想要做的。但是,這可能會要求您聲明比您想要的隊列更多的隊列。
以不同的方式走近。我不明白你爲什麼會把答覆發回給製片人,不僅是由同一個交易所,而且是消費者消費的同一個隊列。
讓生產者P1,P2和P3發送路由鍵「abc.aaa.xyz」/「abc.bbb.xyz」/「abc.ccc.xyz」來交換X1是沒有意義的。然後有隊列Q1,Q2和Q3必將X1與結合鍵 「.aaa。」/ 「.bbb。」/ 「.ccc。」 或只是結合鍵Q1 「ABC。*。XYZ」 (我不清楚你想要什麼,所以只是提出一些建議)。消費者C1,C2和C3消費的是哪些消費者
當消費者完成消息處理後,它將發送消息給X2,並帶有標識自己的路由密鑰。生產者將從綁定到X2的隊列中消耗。
我試圖做的一點是,你不想讓一個以上的消費者從隊列中讀取數據。只有一種情況是你想要的,那是一個任務隊列。我不清楚你的用例,所以你可能需要一個任務隊列。如果你這樣做,你應該仍然沒有讓你的生產者從你的消費者那裏讀取同一個任務隊列。除了任務隊列,你應該有一個消費者從一個隊列中讀取數據。您可能有多個隊列進行一次交換,甚至有許多從一個隊列到一個交換的綁定。
我希望這有助於
我建議你刪除路由標記。您指的是MQ中的路由而不是網絡路由。它們不是一回事,標籤所指的路由是網絡路由。 – robthewolf
我無法理解你的問題。我不確定X2與問題其餘部分的相關性,與DE和F類似。我也認爲您可能需要重新閱讀RabbitMQ網站上的教程,因爲只有在生產者發送和交換時路由才真正發生,消費者從綁定到該交換的隊列中消耗。 – robthewolf
我讀了一堆關於AMQP和RabbitMQ本身的教程。要說清楚:忘記客戶'D','E','F'和隊列'X2'。三個客戶'A','B','C'用'amq.topic'類型向交易所發送消息。這三條消息路由到隊列'X1'。消費者處理所有消息並將響應發送回該交換機。響應隊列'X1'的路由。現在,三個客戶端中的每一個都需要從隊列中獲取消息。因此,客戶端'A'想要發送消息給它,客戶端'B' - 消費者發送給'B'的消息等。這可以怎麼做? – maverik