2014-12-28 3 views
0

나는 amqplib을 node.js와 함께 사용하고 있으며, 나는 channels이라는 개념을 확실히 이해하려고 노력하고 있습니다.amqp rabbitmq 채널 범위

var amqp = require('amqp/callback_api'); 
var connection = amqp.createConnection({ host: "localhost", port: 5672 }); 



connection.on('ready', function() { 
    connection.createChannel(function(err, ch) { 
     ch.assertExchange('1', 'fanout', function(err, ok) {}); 
     ch.assertQueue('a', { 
      exclusive: true, 
      durable: true 
     }, function(err, ok) { 

     }); 
    }); 

위의 경우 : 여기

Channels are multiplexed over connections, and represent something like a session, in that most operations (and thereby most errors) are scoped to channels. 내가하는 AMQP 연결을 열 채널, 교환 및 대기열을 생성 할 기본 코드 :

이것은 amqplib 문서에서입니다 코드는 exchange '1'queue 'a'이 정의 된 채널에만 존재합니까? 이 말은 내가 교환 할 메시지를 다른 채널의 a에 게시하면 a은 여전히 ​​메시지를 전달한다는 뜻입니까?

답변

1

교환기, 대기열 및 메시지와 같은 모든 엔터티는 브로커에 전역으로 존재하며 단일 가상 호스트 내부의 모든 연결 및 채널에서 볼 수 있습니다. 그로부터 예외는 없습니다.

대기열은 독점적으로 정의 될 수 있으며 동일한 연결 내에서만 존재하며 닫히면 대기열이 파괴됩니다. 이는 여전히 눈에 띄기 때문에 다른 연결에서 액세스 할 수없는 특수한 경우입니다.

큐와 교환 모두에 대해 auto-delete 옵션이 있으며, 기본값은 true입니다. 즉 사용 후 삭제 될 것입니다 (자세한 내용은 exchangequeue 자동 삭제 문서 참조).

관련 문제