在前面的例子中,消息直接发送到queue中。
现在介绍的模式,消息发送到exchange中,消费者把队列绑定到exchange上。
发布-订阅模式是把消息广播到每个消费者,每个消费者接收到的消息都是相同的。
一个生产者,多个消费者,每一个消费者都有自己的一个队列,生产者没有将消息直接发送到队列,而是发送到了交换机,每个队列绑定交换机,生产者发送的消息经过交换机,到达队列,实现一个消息被多个消费者获取的目的。需要注意的是,如果将消息发送到一个没有队列绑定的exchange上面,那么该消息将会丢失,这是因为在rabbitMQ中exchange不具备存储消息的能力,只有队列具备存储消息的能力。
队列模型:
二、代码示例 发布者:不再创建队列,发送消息到exchange(交换机)中。exchange_type为fanout。
1 #!/usr/bin/env python 2 import pika 3 4 connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) 5 channel = connection.channel() 6 7 channel.exchange_declare(exchange='logs', 8 exchange_type='fanout') 9 10 for i in range(20): 11 message = "info: Hello World! {}".format(i) 12 channel.basic_publish(exchange='logs', 13 routing_key='', 14 body=message) 15 print(" [x] Sent %r" % message) 16 connection.close()