2016-11-16 3 views
0

Если у меня есть две очереди, из которых я хочу потреблять сообщения, и я использую для него один SimpleMessageQueueListenerContainer, в каком порядке будут вызываться прослушиватели/сообщения, когда обе очереди имеют сообщения?Rabbitmq: назначить приоритет потребляющим сообщениям из нескольких очередей

Я постараюсь быть более конкретными проблемами я работаю:

У меня есть потребительское приложение, которое необходимо потреблять сообщения от 2-х очередей - скажу регулярные задания-очередь и нечастые-задания-очередь. Если есть какие-либо сообщения в «нерегулярных заданиях-очереди», я хочу их использовать до того, как вы будете потреблять сообщения из очереди «regular-jobs-queue». Возможно, я не смогу их объединить и поместить все сообщения в одну очередь приоритетов уровня rabbitmq и назначить более высокий приоритет для сообщения о нечетной задаче из-за некоторых предстоящих прецедентов, таких как очистка регулярных заданий, не затрагивая редких заданий и других.

Я знаю, что у RabbitMQ есть поддержка приоритета потребителей, но я не очень уверен, что он будет применим здесь. Я хочу, чтобы все экземпляры моего потребительского приложения сначала потребляли сообщения очереди редких заданий, если они есть, а не приоритеты среди этих потребителей.

Или мне нужно иметь 2 контейнера с выделенными потребительскими потоками в очереди и иметь внутреннюю структуру данных очереди приоритетов, в которую я могу помещать сообщения как и когда их потребляют из очереди rabbitmq.

Любая помощь была бы действительно оценена. Благодарю.

~ Rashida

ответ

0

Вы не можете делать то, что хотите; сообщения будут доставлены с равным приоритетом.

Перемещение их во внутреннюю очередь в очереди может привести к потере сообщений.

Возможно, вы захотите использовать один из методов RabbitTemplate.receive() или receiveAndConvert() вместо контейнера, управляемого сообщениями.

Таким образом, у вас есть полный контроль.

+0

Это потребует от меня перехода от основанного на обратном вызове подхода к опросу. Посмотрю, смогу ли я попробовать. Благодарю. – Rashida

Смежные вопросы