2016-09-22 1 views
0

Anschluss Ich habe die folgende Ruby-Funktion bekommt zu einer vorhandenen Kaninchen Warteschlange mit einem max_length Wert von 10000Hasen Verwendung, wie x-max-Länge einzustellen, wenn auf vorhandene Warteschlange

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 

Wenn aufgerufen zu verbinden, dieser Fehler wird zurückgegeben:

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' 

Hase Version: 2.0.1 Ruby-Version: 2.3.1

ich mit verschiedenen params zuexperimentiert haben, kann jedoch keine Möglichkeit finden, einen Wert für die maximale Warteschlangenlänge festzulegen.

Vorschläge willkommen.

Antwort

1

sieht aus wie der Trick einen arguments hash als param zu ch.queue

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