2016-09-22 77 views
0

我已经得到了下面的Ruby功能与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 

一个max_length值连接到现有的兔子队列调用时当如何设置X-最大长度,返回此错误:

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 红宝石版本:2.3.1

我已经尝试了各种PARAMS到ch.queue但无法找到设置最大队列长度值的方法。

建议欢迎。

回答

1

貌似诀窍是设置arguments散列作为一个参数去ch.queue

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