2017-11-06 1 views
0

In AMQP der assertQueue API-Dokumentation, heißt es:AMQP assertQueue bork eine Verbindung bedeutet

eine Warteschlange in die Existenz Behaupten. Diese Operation ist bei identischen Argumenten identisch; Wenn die Warteschlange jedoch bereits vorhanden ist, aber andere Eigenschaften aufweist (der Wert, der im Argumentarfeld angegeben wird, kann für den Borking-Vorgang zählen oder nicht, siehe Dokumentation des Brokers, ich meine Broker).

http://www.squaremobius.net/amqp.node/channel_api.html#channel_assertQueue

Ich frage, was es von bork bedeutet (ing) des Kanals. Ich habe versucht google, kann aber nichts relevantes finden.

Antwort

0

Das RabbitMQ-Team überwacht this mailing list und beantwortet nur manchmal Fragen zu StackOverflow.

Nachdem Sie das gesagt haben, haben Sie versucht, assertQueue zweimal mit unterschiedlichen Eigenschaften beim zweiten Mal zu rufen? Du hättest deine eigene Frage sehr schnell beantwortet.

verwendete ich this code dieses Testprogramm zu erstellen:

#!/usr/bin/env node 

var amqp = require('amqplib'); 

amqp.connect('amqp://localhost').then(function(conn) { 
    return conn.createChannel().then(function(ch) { 
    var q = 'hello'; 
    var ok0 = ch.assertQueue(q, {durable: false}); 
    return ok0.then(function(_qok) { 
     var ok1 = ch.assertQueue(q, {durable: true}); 
     return ok1.then(function(got) { 
      console.log(" [x] got '%s'", got); 
      return ch.close(); 
     }); 
    }); 
    }).finally(function() { conn.close(); }); 
}).catch(console.warn); 

Dann starten RabbitMQ und Ihren Testcode auszuführen. Sie sollten die Ausgabe wie folgt sehen:

$ node examples/tutorials/assert-borked.js 
events.js:183 
     throw er; // Unhandled 'error' event 
    ^

Error: Channel closed by server: 406 (PRECONDITION-FAILED) with message "PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'hello' in vhost '/': received 'true' but current is 'false'" 
    at Channel.C.accept