20161025 路由 - topic 交换机

目的

 在类型为 topic 的 exchange 下,设置绑定队列的 routingkey 参数不同时,观察消息的路由情况。

环境

实验室环境的一台正常运行的 Rabbit MQ 服务器。

过程

1 新建一个 Virtual Host ,名称为 test_vhost1 。

$ rabbitmqctl add_vhost test_vhost1
Creating vhost "test_vhost1" ...

2 在名称为 test_vhost1 的下 Virtual Host ,设置名称 admin 用户的权限为可进行任何操作。

$ rabbitmqctl set_permissions -p test_vhost1 admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "test_vhost1" ...

3 在名称为 test_vhost1 的 Virtual Hosts 下,新建一个 Exchange 名称为 x.test ,类型为 topic 。

4 在名称为 test_vhost1 的 Virtual Hosts 下,新建五个 Queue 名称分别为 q.1 、q.2 、q.3 、q.4 、q.5 。

   4.1 把 x.test 交换机和 q.1 队列进行绑定,设置其 routingkey 为 # 。

   4.2 把 x.test 交换机和 q.2 队列进行绑定,设置其 routingkey 为 abc.* 。

   4.3 把 x.test 交换机和 q.3 队列进行绑定,设置其 routingkey 为 *.abc 。

   4.4 把 x.test 交换机和 q.4 队列进行绑定,设置其 routingkey 为 *.abc.* 。

   4.5 把 x.test 交换机和 q.5 队列进行绑定,设置其 routingkey 为 abc 。

   4.6 查看交换机的绑定情况

$  rabbitmqctl list_bindings -p test_vhost1 source_name source_kind destination_name destination_kind routing_key arguments
Listing bindings ...
    exchange    q.1  queue   q.1 []
    exchange    q.2  queue   q.2 []
    exchange    q.3  queue   q.3 []
    exchange    q.4  queue   q.4 []
    exchange    q.5  queue   q.5 []
x.test   exchange    q.1  queue  # []
x.test   exchange    q.2  queue  abc.* []
x.test   exchange    q.3  queue  *.abc []
x.test   exchange    q.4  queue  *.abc.* []
x.test   exchange    q.5  queue  abc []
  1. 在控制台 x.test 交换机的页面下发送一条消息,其 routingkey 是 aaa 。
  2. 查看结果,发现 q.1 队列能接收到消息。
  3. 在控制台 x.test 交换机的页面下发送一条消息,其 routingkey 是 abc.a 。
  4. 查看结果,发现 q.1 和 q.2 能接收到消息。
  5. 在控制台 x.test 交换机的页面下发送一条消息,其 routingkey 是 abc.ab 。
  6. 查看结果,发现 q.1 和 q.2 能接收到消息 。
  7. 在控制台 x.test 交换机的页面下发送一条消息,其 routingkey 是 abc.ad.c 。
  8. 查看结果,发现 q.1 能接收到消息。
  9. 在控制台 x.test 交换机的页面下发送一条消息,其 routingkey 是 a.abc。
  10. 查看结果,发现 q.1 和 q.3 能接收到消息。
  11. 在控制台 x.test 交换机的页面下发送一条消息,其 routingkey 是 aa.abc.b 。
  12. 查看结果,发现 q.1 和 q.4 能接收到消息。
  13. 在控制台 x.test 交换机的页面下发送一条消息,其 routingkey 是 abc 。
  14. 查看结果,发现 q.1 和 q.5 能接收到消息。

结果

 

q.1

q.2

q.3

q.4

q.5

routingkey#abc.**.abc*.abc.*abc
aaa----
abc.a---
abc.ab---
abc.ad.c ----
a.abc---
aa.abc.b---
abc---

注: ● 表示此队列能接收到消息,- 表示此队列不能接收到消息。

 

更多实验可点击:Rabbitmq 实验

转载于:https://my.oschina.net/u/3568300/blog/3006788

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值