正確的臨時隊列對於發出RPC請求的客戶端是唯一的。我們可以創建RPC客戶端有它使每一個獨特的請求,唯一的隊列,但是這將是低效的 - 看到的correlationID here第一款規定:
在上面,我們建議創建一個回調隊列提出的方法每個RPC請求。這是非常低效的,但幸運的是有一個更好的方法 - 讓我們爲每個客戶端創建一個回調隊列。
所以更好的方法是讓一個隊列讓RPC客戶端得到響應,並使用correlationId將RPC客戶端發出的請求與RPC服務器發回的請求進行匹配。
...在該隊列中收到響應,不清楚響應屬於哪個請求。那是什麼時候使用correlation_id屬性。我們將把它設置爲每個請求的唯一值。稍後,當我們在回調隊列中收到消息時,我們會查看此屬性,並基於此屬性,我們將能夠將響應與請求進行匹配。如果我們看到未知的correlation_id值,我們可以放心地丟棄該消息 - 它不屬於我們的請求。
所以引用RPC tutorial的摘要部分:
當客戶機啓動時把它發送它設置REPLY_TO這是隊列名稱的RPC請求它創建一個獨特和唯一隊列
- (所以服務器知道哪個隊列發送響應),並且還設置correlationId,它是每個RPC請求的唯一值,該請求被髮送到RPC隊列
- RP C工作人員(或服務器)接收請求進程,然後使用reply_to值將響應發送回客戶端,同時還設置correlationId RPC客戶端等待響應,並且當它收到一個響應時使用對號到MATCH對請求的迴應