交换机
- direct(直连交换机)
- topic(主题交换机)
- headers(头部交换机)
- fanout(扇形交换机)
扇形交换机
- 声明一个扇形交换机
type='fanout'
1 | channel.exchange_declare(exchange='logs', |
- 查看声明是否成功
1 | [root@tencent1 sbin]# ./rabbitmqctl list_exchanges |
- 发送消息时指定对应的exchange
1 | channel.basic_publish(exchange='fanout_exchange', |
- 声明两个队列并使用channel.queue_bind进行绑定
1 | channel.queue_declare("queue1") |
- 查看绑定情况
1 | ./rabbitmqctl list_bindings |
- 仅仅往exchange中发送消息(需要注意的是,扇形交换机会忽略routing_key值)
1 | channel.basic_publish(exchange='fanout_exchange', |
- 查看队列中的消息状态
1 | [root@tencent1 sbin]# ./rabbitmqctl list_queues name messages_ready messages_unacknowledged |
direct直连交换机
- 声明direct交换机
1 | channel.exchange_declare(exchange="direct_exchange",exchange_type="direct") |
- 声明三个队列,并设置不同的两个routing_key
1 | channel.queue_declare(queue="direct_queue1") |
- 发送消息
1 | channel.basic_publish(exchange="direct_exchange", |
- 查看结果
1 | [root@tencent1 sbin]# ./rabbitmqctl list_queues name messages_ready messages_unacknowledged |
topic交换机
- topic交换机能够涵盖扇形交换机和直连交换机的功能。主要是通过灵活的定义routing_key进行实现
- 定义一个topic交换机
1 | channel.exchange_declare(exchange="topic_exchange",exchange_type="topic") |
- 声明三个队列,并灵活使用routing_key和交换机进行绑定
1 | channel.queue_declare(queue="topic_queue1") |
- 发送消息
1 | # 三个队列都会接收到消息 |