使用 bunny,如何在连接到现有队列时设置 x-max-length
Using bunny, how to set x-max-length when connecting to existing queue
我有以下 ruby 函数连接到一个 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'
兔子版本:2.0.1
Ruby版本:2.3.1
我尝试了各种参数 ch.queue
但找不到设置最大队列长度值的方法。
欢迎提出建议。
看起来诀窍是将 arguments
哈希设置为 ch.queue
的参数
q = ch.queue(
settings['queue'],
durable: true,
auto_delete: false,
:arguments => { 'x-max-length' => settings['queue_length'].to_i }
)
我有以下 ruby 函数连接到一个 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'
兔子版本:2.0.1 Ruby版本:2.3.1
我尝试了各种参数 ch.queue
但找不到设置最大队列长度值的方法。
欢迎提出建议。
看起来诀窍是将 arguments
哈希设置为 ch.queue
q = ch.queue(
settings['queue'],
durable: true,
auto_delete: false,
:arguments => { 'x-max-length' => settings['queue_length'].to_i }
)