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

你可能感兴趣的:(20161025 路由 - topic 交换机)