2014-01-15 4 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. Как вы связываете Exchange с Queue, используется Binding. Связывание определяется ключом маршрутизации или некоторыми заголовками, и оно направляет ваши сообщения с определенного обмена на определенную очередь.

Итак, вы можете публиковать сообщения на Exchange. Вы потребляете сообщения от Queue. И вы используете Binding для маршрутизации сообщений от Exchange до Queue. Тем не менее, нельзя сказать, что потребитель потребляет от Exchange.

В вашем конкретном случае вы используете ключ маршрутизации «привет» в своем сообщении. Это означает, что вам нужен Binding от вашего Exchange под названием '' до Queue, называемый 'hello', с тем же ключом маршрутизации, что и ваше сообщение (которое является «привет»). Я бы рекомендовал вам менять имена и иметь более полезные имена, чтобы узнать, что происходит.

Надеюсь, это поможет!

 Смежные вопросы

  • Нет связанных вопросов^_^