Exchange
在生产者/消费者模型中,生产者是不会直接将消息发送到队列的,生产者只能把消息发送到 exchange 上。
先看一个简单的模型:
exchange 的一端是生产者,另一端是队列,exchange 需要知道把消息发送到哪些队列。
有了 exchange 和队列之后,需要进行 bindings, 来告诉 exchange 把消息发送到指定队列。
1 | channel.queue_bind(exchange=exchange_name, |
在 bindings 的时候,可以指定 routing_key,来控制消息要发送的队列。
当然多个队列可以有相同的 routing_key
一个完整的生产者消费者模型如下:
根据不同的规则,
rabbitmq 划分了四种 exchange:
- Direct
- Fanout: 把消息发送到所有绑定的队列;
- Topic:
- Headers