2016-08-08 2 views
0

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

Для обработки этого процесса потребуется некоторое время, и я не хочу начинать обработку другого сообщения из этой конкретной очереди до тех пор, пока не будет завершен предыдущий. Если возможно, я бы не хотел, чтобы процесс/поток работал только для того, чтобы ждать завершения внешнего процесса и сервера. В идеале, я хотел бы поддержать этот внешний процесс, возможно, передать некоторый идентификатор, чтобы он мог подключиться к RabbitMQ и получить сообщение.

Возможно ли разработать эту систему с помощью RabbitMQ? Я использую Python и Pika, если это имеет отношение к ответу.

Спасибо!

ответ

0

RabbitMQ может это сделать.

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

Я не уверен, для чего нужен акк? Вы пытаетесь остановить RabbitMQ от добавления новых элементов в эту очередь, если она становится слишком полной (потому что ее элементы обрабатываются слишком медленно/вообще не)? Возможно, есть способ сделать это, когда вы добавляете сообщения в очереди - перед добавлением элемента проверьте, чтобы количество сообщений, уже находящихся в этой очереди, не было «намного больше» среднего значения во всех очередях?

+0

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

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