Существует ли RabbitMQ / pika, эквивалентный опции CONFLATE в ZMQ? - PullRequest
0 голосов
/ 01 мая 2018

Я хочу, чтобы мой pub / sub сохранял только последнее доступное сообщение на канале и сбрасывал все предыдущие сообщения, которые не были бы использованы из-за слишком медленного (или приостановленного) потребителя. У ZMQ есть опция CONFLATE , но есть ли у RabbitMQ аналогичная опция на Python (pika)?

Издатель обновляется с частотой 50 Гц, в то время как некоторые подписчики не могут обрабатывать их так быстро (от 10 до 50 Гц). Я не хочу, чтобы они обрабатывали самое старое сообщение в очереди (что означает обработку данных, которые уже устарели); оно должно обрабатывать только последнее доступное сообщение, когда оно готово к использованию.

1 Ответ

0 голосов
/ 02 мая 2018

RabbitMQ фактически поддерживает сценарий, как описано "из коробки", с помощью функции Максимальная длина очереди .

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

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

Поведение по умолчанию для RabbitMQ, когда задана максимальная длина или размер очереди и достигнут максимум, - отбрасывать или вводить недоставленные сообщения с начала очереди (т. Е. Самые старые сообщения в очереди).

...