rabbitmq06 交换机

2018-08-26  本文已影响2人  6c0fe9142f09

交换机

扇形交换机
 channel.exchange_declare(exchange='logs',
                         type='fanout')
[root@tencent1 sbin]# ./rabbitmqctl list_exchanges
Listing exchanges ...
fanout_exchange fanout
channel.basic_publish(exchange='fanout_exchange',
                      routing_key="",
                      body="message")
channel.queue_declare("queue1")
channel.queue_declare("queue2")
channel.queue_bind(exchange="fanout_exchange",queue="queue1")
channel.queue_bind(exchange="fanout_exchange",queue='queue2')
./rabbitmqctl list_bindings
Listing bindings ...
fanout_exchange exchange    queue1  queue   queue1  []
fanout_exchange exchange    queue2  queue   queue2  []
...done.
channel.basic_publish(exchange='fanout_exchange',
                      routing_key="", 
                      body="message")
[root@tencent1 sbin]# ./rabbitmqctl list_queues name messages_ready messages_unacknowledged 
Listing queues ...
queue1  1   0
queue2  1   0
...done.

direct直连交换机
channel.exchange_declare(exchange="direct_exchange",exchange_type="direct")
channel.queue_declare(queue="direct_queue1")
channel.queue_declare(queue="direct_queue2")
channel.queue_declare(queue="direct_queue3")
channel.queue_bind(exchange="direct_exchange",queue="direct_queue1",routing_key="red")
channel.queue_bind(exchange="direct_exchange",queue="direct_queue2",routing_key="red")
channel.queue_bind(exchange="direct_exchange",queue="direct_queue2",routing_key="blue")
channel.queue_bind(exchange="direct_exchange",queue="direct_queue3",routing_key="blue")
channel.basic_publish(exchange="direct_exchange",
                      routing_key="red",
                      body="red_message")

channel.basic_publish(exchange="direct_exchange",
                      routing_key="blue",
                      body="blue_message")
[root@tencent1 sbin]# ./rabbitmqctl list_queues name messages_ready messages_unacknowledged 
Listing queues ...
direct_queue1   1   0
direct_queue2   2   0
direct_queue3   1   0
...done.
topic交换机
channel.exchange_declare(exchange="topic_exchange",exchange_type="topic")
channel.queue_declare(queue="topic_queue1")
channel.queue_declare(queue="topic_queue2")
channel.queue_declare(queue="topic_queue3")

# 当routing_key=“一个任意单词.orange.一个任意单词”
channel.queue_bind(exchange="topic_exchange",queue="topic_queue1",routing_key="*.red.*")
# 当routing_key=“任意值”
channel.queue_bind(exchange="topic_exchange",queue="topic_queue2",routing_key="#")
# 当routing_key=“一个任意单词.orange.0个或1一个任意单词”
channel.queue_bind(exchange="topic_exchange",queue="topic_queue3",routing_key="*.red.#")
# 三个队列都会接收到消息
channel.basic_publish(exchange="topic_exchange",
                      routing_key="n1.red.n3",
                      body="topic_message")

# 只有queue2和queue3能够接受到消息
channel.basic_publish(exchange="topic_exchange",
                      routing_key="n1.red",
                      body="topic_message")
# 只有queue2能够接受到消息
channel.basic_publish(exchange="topic_exchange",
                      routing_key="hjdasoij",
                      body="topic_message")
上一篇 下一篇

猜你喜欢

热点阅读