Exchanges 目前有4 种类型为 Direct , Fanout , Topic , handers 。以下测试简单理解 Exchanges, Routing key 及 Queues 的关系。
首先创建3个 Exchanges 为 test_direct,test_fanout,test_topic,分别对应的类型为 direct,fanout,topic 。再创建7个队列为 queue00~queue06 。
绑定信息及测试结果:
|
Exchange |
Bindings |
测试结果及说明 | |
|
Queues |
Routing key | ||
|
test_direct |
queue00 |
Publish message 时需指定 Routing key。不指定则发送到第一个不用 Routing key 绑定的 queue00;指定 Routing key 则发送到绑定的队列中。 | |
|
queue01 |
rk | ||
|
queue02 |
kk01 | ||
|
|
| ||
|
test_fanout |
queue00 |
message 发送到所有绑定的队列中,即使设置 Routing key 也无效,所依没必要设置多余的 Routing key。 | |
|
queue03 | |||
|
queue04 | |||
|
|
| ||
|
test_topic |
queue00 |
message 发送时发送到通配符符合的队列中。不指定则发送到第一个不用 Routing key 绑定的 queue00;Publish message 指定 Routing key 为 aa.kkk 类的则发送到 Routing key=aa.# 的队列 queue05 中。 | |
|
queue05 |
aa.# | ||
|
queue06 |
bb.# | ||
绑定操作可在UI管理界面中进行,如下图:
发送消息操作在 bindings 下面,操作如下图:
结果查看队列信息,如下图:
使用命令行创建和绑定脚本参考如下:
#创建 exchange = test_exchange
python rabbitmqadmin declare exchange --vhost=/ name=test_exchange type=direct
# 创建 queue = test_queue
python rabbitmqadmin declare queue --vhost=/ name=test_queue durable=true
# 绑定 test_exchange 与 test_queue
python rabbitmqadmin --vhost="/" declare binding source="test_exchange" destination_type="queue" destination="test_queue" routing_key=""
2119

被折叠的 条评论
为什么被折叠?



