2010-08-06 177 views
0

我已創建一個RabbitMQ生產者和一個RabbitMQ消費者....RabbitMQ消息交換

假設我的生產者生產10條消息。我如何從這10條消息中獲得特定的消息。

我想知道如何唯一標識一條消息並閱讀該消息或使用該消息。

+0

這是當阻塞的例子一個真正的問題,他想知道如何過濾消息。 – 2010-08-06 13:49:37

+0

您是使用JMS還是使用AMQP? – 2010-08-06 13:49:58

+0

我使用AMQP .. – 2010-08-08 06:38:47

回答

0

有幾種方法可以做到這一點,但我最常用的方法是使用對消息類型唯一的路由鍵。然後,消費者使用特定的路由密鑰綁定到該交換機上,這會導致消息只發送給這些消費者。

如果你可以避免它,你永遠不應該只將信息轉儲到一個隊列中,讓消費者將它們排序。路由密鑰和交換機是專門用於路由消息的強大工具。你應該利用這一點。

+0

Brisbin感謝您回答這個問題。那麼我已經知道你在說什麼了。但我有這個奇怪的要求。這就是我想要做的事情:當製作人發佈消息時(假設他已經發布了5條消息),我們應該通知發佈者他的每條消息是如何被唯一標識的。當出版商要求他通過我們提供給他的唯一標識符發佈的特定消息時,應該向他展示該消息,以便如果他希望他可以編輯它併發布新消息。 – 2010-08-09 05:28:23

+0

首先我們綁定交換,隊列和路由鍵 例如:ch.QueueBind(「queue」,「exch」,「key2」,false,null); 當你發佈一條消息時,你提到了交換,路由密鑰,basicproperties,消息體,例如:ch.BasicPublish(「exch」,「key2」,null,messagebody1); 雖然您使用該消息,但只提及隊列名稱。 eg:BasicGetResult result = ch.BasicGet(「queue」,noAck); 現在上面的語句將消耗隊列中的所有消息..我的問題是如果我想從隊列中使用基於路由密鑰的特定消息。 – 2010-08-09 05:34:19