目的
验证rabbitmq的 finout方式交换机无参绑定多个队列的配置及使用。
环境
实验室环境的 3 台 Rabbit MQ 服务器,已经配置好集群。
过程
1 新建一个用户,用户名和密码都是 test
$ rabbitmqctl add_user test test
Creating user "test" ...
2 新建一个名称为 test 的 Virtual Hosts
$ rabbitmqctl add_vhost test
Creating vhost "test" ...
3 设置该用户在该 Virtual Hosts 的权限,权限为可进行任何操作
$ rabbitmqctl set_permissions -p test test ".*" ".*" ".*"
Setting permissions for user "test" in vhost "test" ...
4 查看 test 用户权限
$ rabbitmqctl list_user_permissions test
Listing permissions for user "test" ...
test .* .* .*
5 给 admin 用户设置访问 Virual Hosts名为 test 的所有权限,这样可以在控制台登录 admin 用户看到 test 下的所有内容
$ rabbitmqctl set_permissions -p test admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "test" ...
6 在名称为 test 的 Virtual Host 下新建一个名称为 test_exchange 的 Exchange
7 在名称为 test 的 Virtual Host 下新建一个名称为 test_queue1 的队列
8 在名称为 test 的 Virtual Host 下新建一个名称为 test_queue2 的队列
9 在名称为 test 的 Virtual Host 下新建一个名称为 test_queue3 的队列
10 使用 test_exchange 分别无参绑定这两个队列
11 查看名称为 test 的 Virtual Host 下交换机绑定情况
$ rabbitmqctl list_bindings -p test source_name source_kind destination_name destination_kind routing_key arguments
Listing bindings ...
exchange test_queue1 queue test_queue1 []
exchange test_queue2 queue test_queue2 []
exchange test_queue3 queue test_queue3 []
test_exchange exchange test_queue1 queue []
test_exchange exchange test_queue2 queue []
test_exchange exchange test_queue3 queue []
12 通过控制台向名称为 test_exchange 的交换机发送消息
13 查看名称为 test 的 Virtual Host 下的队列信息
$ rabbitmqctl list_queues -p test name policy pid slave_pids messages_ready
Listing queues ...
test_queue2 2
test_queue1 2
test_queue3 2
结论
- 类型为 finout 的交换机可绑定多队列,在向该交换机发消息时所有绑定的队列都能收到。
更多实验可点击:Rabbitmq 实验