Можно ли объявить максимальный размер очереди с помощью AMQP? - PullRequest
5 голосов
/ 29 октября 2011

Как гласит заголовок - возможно ли объявить максимальный размер очереди и поведение посредника, когда этот максимальный размер будет достигнут? Или это опция для конкретного брокера?

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

Ответы [ 5 ]

5 голосов
/ 31 октября 2011

В зависимости от того, почему вы спрашиваете, вам может не понадобиться максимальный размер очереди. Начиная с версии 2.0 RabbitMQ будет без проблем сохранять большие очереди на диск вместо хранения всех сообщений в оперативной памяти. Так что, если вы беспокоитесь о сбое брокера из-за того, что он исчерпывает свои ресурсы, в большинстве случаев это не является большой проблемой - при условии, что у вас нет свободного места на жестком диске.

В целом это постоянство на самом деле очень мало влияет на производительность, потому что по определению единственными «горячими» частями очереди являются голова и хвост, которые остаются в ОЗУ; большая часть отставания является «холодной», поэтому нет никакой разницы, что она находится на диске.

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

4 голосов
/ 29 октября 2011

AFAIK, вы не можете объявить максимальный размер очереди с RabbitMQ.

Кроме того, в разделе AMQP нет такой настройки:

http://www.rabbitmq.com/amqp-0-9-1-quickref.html#queue.declare

2 голосов
/ 07 июня 2013

Вы можете прочитать о реализации максимальной очереди RabbitMQ здесь http://www.rabbitmq.com/maxlength.html

Они не блокируют добавление входящих сообщений, а отбрасывают сообщения из заголовка очереди.

Вы обязательно должны прочитатьОб управлении потоком здесь: http://www.rabbitmq.com/memory.html

1 голос
/ 30 октября 2011

с qpid, да Вы можете указать максимальный размер очереди и политику в случае повышения максимума. Звонить, игнорировать сообщения, разорвать связь. у вас также есть очереди lvq (las value), которые очень настраиваемы

0 голосов
/ 11 ноября 2011

Есть некоторые вещи, которые вы не можете сделать с брокерами, но вы можете сделать это в своем приложении.Например, есть два метода AMQP, basic.get и queue.declare, которые возвращают количество сообщений в очереди.Вы можете использовать это для периодического получения количества ожидающих сообщений и выполнения действий (например, запуска новых процессов пользователя), если число сообщений становится слишком большим.

...