AMQP и очередь "порциями"?

Необходимо организовать очередь сообщений с «порционной» отдачей клиентам. Например:


поступило в очередь 1000 сообщений за интервал 1-2 секунды, нужно отдать эту очередь обработчику по 100 сообщений в секунду.


Сейчас очередь организована на RabbitMQ, но подобные настройки не нашел, чтение документации и гугление ничего не дало, видимо он такой режим работы не поддерживает. Подскажите наиболее труЪ-решение.
  • Вопрос задан
  • 2953 просмотра
Пригласить эксперта
Ответы на вопрос 2
mironov_anton
@mironov_anton
Поддерживает, с помощью prefetch.
Для руби код будет примерно таким:

    mq_conn = AMQP.connect
    mq = MQ.new(mq_conn).prefetch(100)

    mq.queue("queue").subscribe do |header, message|
        # processing...
    end

Правда это не регулирует скорость отдачи, но сообщения получателю будут отправлены именно порцией в 100 штук. Таким образом если несколько получателей, то 1000 сообщений будет отправлено между ними порциями по 100 штук.

Если необходимо именно 100 сообщений в секунду, то по всей видимости нужно вручную использовать .pop с нужным интервалом.
Ответ написан
Комментировать
@aleks_raiden
я не уверен, но такое точно есть в JBoss HornetQ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы