2016-11-16 161 views
0

如果我有兩個隊列用於消費消息,並且我使用一個SimpleMessageQueueListenerContainer作爲消息,那麼當兩個隊列中都有消息時,將以何種順序調用偵聽器?Rabbitmq:優先消費來自多個隊列的消息

我會嘗試更具體,我的工作對這個問題的:

我有一個需要從2個隊列消費消息的消費者應用程序 - 比如定期的作業隊列和偶發的作業隊列。如果'infrequent-jobs-queue'中有任何消息,我想在消費'regular-jobs-queue'消息之前使用這些消息。我可能無法將這些優先級更高,因爲一些即將到來的使用情況一樣定期清洗的作業,而不會影響罕見的作業等結合起來,並把所有的郵件到一個單一的RabbitMQ級優先級隊列,並分配給不頻繁,作業消息。

我知道的RabbitMQ對消費者的優先支持,但我不是很確定這是否是適用在這裏。我希望我的客戶應用程序的所有實例首先使用不頻繁作業隊列的消息(如果有的話),而不是在這些消費者中優先化。

或者我想有2個容器中,其中每個隊列專用消費者線程(S)和具有內部優先權隊列數據結構進我可以把消息作爲從隊列的RabbitMQ時消耗。

任何幫助將非常感激。謝謝。

〜拉希達

回答

0

你不能做你想做的事;消息將以相同的優先級傳送。

將它們移動到一個內部存儲器內的隊列將風險消息丟失。

您可能需要考慮使用RabbitTemplate.receive()receiveAndConvert()方法之一而不是消息驅動容器。

你有完全控制的方式。

+0

這需要我從基於回調的方法轉移到基於輪詢。將看看我是否可以試試看。謝謝。 – Rashida