2017-05-29 53 views
1

我有一個使用RabbitMQ進行異步調用的Spring Boot應用程序。 在偵聽器(消費者)中,我想從某處獲取路由密鑰? 這可能嗎?你可以幫我嗎 ?有沒有什麼辦法讓聆聽器中的路由密鑰

謝謝。

+0

這裏是有用的教程爲您:https://www.rabbitmq.com/tutorials/tutorial-three-java.html –

回答

0

首先你應該認識到消費者沒有路由密鑰。消費者只需從隊列中獲取消息。消息來自一個或多個交易所。路由密鑰是交換和隊列之間的關係屬性,而不是隊列和消費者之間的關係。

當通過路由密鑰attention交換的隊列綁定到直接交換時,會將每個帶有交付標記attention的消息放入該隊列。隊列可能有多個路由鍵的邊界。

因此,當您在消費者的上下文中討論路由密鑰時,您確實是指消息的傳遞標籤。

請參閱queue.bindbasic.delivery

不確定有一種直接的方式可以獲取有關AMPQ中隊列綁定的信息。

+0

這是一個誤導性的答案。有一種方法可以獲取發佈期間使用的原始路由密鑰。 – theMayer

0

下面是代碼:

message.getMessageProperties().getHeader().getReceivedRoutingKey(); 

我已經在我的項目的一些錯誤,因此我沒能達到路由的關鍵。我找到了我的問題的根本原因,所以上面的代碼解決了問題。

0

最初用於發佈消息的路由密鑰是AMQP 0-9-1規範中事件參數的一部分。

沒有你正在使用的代碼和RabbitMQ客戶端庫的具體示例,這是一般的答案。在您特定的RabbitMQ實現中,如果您可以找到訪問交付事件參數的方法,那麼它應該包含路由密鑰。如果沒有,我建議選擇另一個更符合規範的客戶端庫。

相關問題