2014-01-15 1 views
0

제목의 전부 : rabbitmq의 설명서에서 아래의 방법으로 공개는 인수로 간주되지만 소비자는 그렇지 않습니다.Pika 소비자의 교환을 지정하는 방법은 무엇입니까?

내가 소비자인데 소비자의 queue은 게시시 routing_key과 동일합니까?

import pika 
def callback(ch, method, properties, body): 
    print " [x] Received %r" % (body,) 

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) 
channel = connection.channel() 
channel.queue_declare(queue='hello') 
channel.basic_consume(callback, queue='hello', no_ack=True) 
channel.start_consuming() 

코드를 게시 :

import pika 
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) 
channel = connection.channel() 
channel.queue_declare(queue='hello') 
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!') 
connection.close() 

답변

1

당신에 대해 혼란스러워지고 나는 가입자가

코드가 소비 태그의 다양한 정규식에 가입하도록 라우팅 키 태그 같다고 생각 RabbitMQ에서 일하는 법. RabbitMQ에서는 항상 메시지를 Exchange에 게시합니다. 교환기는 Queue (또는 큐 세트)으로 메시지를 라우팅하는 논리 수신기와 다르지 않습니다.

이 라우팅은 Exchange의 유형에 따라 다르게 발생합니다. Direct, Fanout, Topic, Headers 등 다양한 유형이 있습니다. ExchangeQueue에 연결하는 방법은 Binding입니다. 바인딩은 라우팅 키 또는 일부 헤더로 정의되며 특정 교환에서 특정 큐로 메시지를 라우팅합니다.

요약하면 메시지를 Exchange에 게시합니다. Queue의 메시지를 소비합니다. Binding을 사용하여 Exchange에서 Queue으로 메시지를 라우팅합니다. 즉, 소비자가 Exchange에서 소비한다고 말할 수있는 방법이 없습니다.

특정 경우에 메시지에서 라우팅 키 'hello'를 사용하고 있습니다. 즉, 귀하의 메시지와 동일한 라우팅 키 ('안녕하세요')를 사용하여 '안녕하세요'라는 Queue에 의 Binding이 필요합니다. 나는 당신이 이름을 바꾸고 더 유용한 이름을 가지고 무슨 일이 일어나고 있는지 지켜 볼 것을 권한다.

희망이 도움이됩니다.

관련 문제