RabbitMQ 2 Queues - PullRequest
       49

RabbitMQ 2 Queues

0 голосов
/ 23 января 2020

Видел похожие вопросы, но разные ожидаемые ответы. Мой вопрос: могу ли я создать получателя, чтобы сосредоточиться на одной очереди, пока он не опустошится, а затем переключиться на другую очередь, пока новая работа не будет отправлена ​​в их основную очередь?

Например: 1 очередь содержит большое количество работа должна быть обработана в течение более длительного периода времени и для своих собственных выделенных потребителей (например, 3). Вторая очередь получает гораздо меньше работы, которая требует меньше обработки. Если потребители для 2-й очереди завершат свою работу, могу ли я сделать так, чтобы они переключались на первую очередь, пока их очередь не получит больше работы?

1 Ответ

1 голос
/ 23 января 2020

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

A RabbitMQ Consumer - это устройство протокола - по сути, это обозначение, по которому канал / соединение хотели бы, чтобы ему передавались сообщения под назначенным тегом потребителя. В этом смысле это просто уведомление брокеру о немедленной отправке сообщений.

В каноническом смысле получатель сообщения - это любой фрагмент кода, который обрабатывает сообщения.

Итак, ответ на ваш вопрос «да, go впереди и напишите свою программу для этого». Вы контролируете канонический код потребителя. Ваше программное обеспечение должно определить, что делать с сообщением, которое поступает из очереди.

Теперь, если вам интересно, может ли RabbitMQ повторно подписать потребителя на другую очередь, ответ таков: это не так, как это работает ". В RabbitMQ потребитель - это просто ответ на запрос подписки на очередь - это объект «потребительский тег». Текущий характер подписки привязан к паре канал / соединение.

Что делать? Хотя в вашем коде не указан какой-либо конкретный язык кодирования, по моему мнению, вы ' не в курсе, даже задавая этот вопрос. Подпишитесь на обе очереди. Если рабочему нечего делать, я думаю, что компьютер был бы совершенно доволен этим. Если вас беспокоит то, что очередь слишком занята и выдает слишком много работы, вы можете использовать ряд методов для регулирования количества сообщений, поступающих этому потребителю. Одним из популярных методов является prefetch .

...