Используя bunny, как установить x-max-length при подключении к существующей очереди

У меня есть следующая рубиновая функция для подключения к существующей очереди кроликов со значением max_length 10000

  def self.send(settings, event_str)
    conn = Bunny.new(
        hostname: settings['host'],
        username: settings['user'],
        password: settings['password'],
        virtual_host: settings['virtual_host']
    )
    conn.start
    ch = conn.create_channel
    q = ch.queue(
        settings['queue'],
        durable: true,
        auto_delete: false,
        x_max_length: 10000
    )
    ch.default_exchange.publish(event_str, :routing_key => q.name)
  end

При вызове возвращается эта ошибка:

PRECONDITION_FAILED - inequivalent arg 'x-max-length' for queue 'event_queue' in vhost '/sensu': received none but current is the value '100000' of type 'signedint'

Версия Bunny: 2.0.1 Версия Ruby: 2.3.1

Я экспериментировал с различными параметрами toch.queue, но не могу найти способ установить значение максимальной длины очереди.

Предложения приветствуются.


person Travis Bear    schedule 22.09.2016    source источник


Ответы (1)


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

    q = ch.queue(
        settings['queue'],
        durable: true,
        auto_delete: false,
        :arguments => { 'x-max-length' => settings['queue_length'].to_i }
    )
person Travis Bear    schedule 22.09.2016