Пика единая очередь с несколькими потребителями - PullRequest
0 голосов
/ 30 ноября 2018

Программа Python, выполняющая одну очередь с несколькими потребителями

Я ищу, когда очередь получает несколько сообщений (например: 10 сообщений),

Есть ли способ, которым несколькопотребители (например, 5 потребителей) делят загрузку сообщений из очереди примерно так, как каждый потребитель потребляет 2 сообщения из очереди?

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

1 Ответ

0 голосов
/ 30 ноября 2018

Вы хотите «поиграть» с потребительской предварительной выборкой . Это то, что гарантирует, что один потребитель не будет жадно брать все сообщения в очереди, а затем обрабатывает их одно за другим (aдовольно распространенная ситуация).

Из документации:

Channel channel = ...;
Consumer consumer = ...;
channel.basicQos(2); // Per consumer limit
channel.basicConsume("my-queue", false, consumer);

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

До тех пор, пока он не подтвердит одно из сообщений (что оно должно сделать после обработки), он сможет выбрать больше.

...