RabbitMQ通过管理页面实现发布与订阅

这里会根据交换机Exchanges的四种类型实现消息发送给队列

注:这里记得给先我们用户授权virtualhostrabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

如果你没有使用过RabbitMQ,建议先部署一下RabbitMQ:RabbitMQ单机部署,然后看一下RabbitMQ管理页面说明

1.fanout

该类型交换机会将消息分发到指定交换机绑定的所有队列上

首先创建一个交换机,type选择fanout

然后创建几个队列

这里我创建了三个

然后点击我们刚创建的交换机进去,点击bindings绑定

将我们三个队列都与我们新创建的交换机进行绑定

然后继续在该界面使用publish message投递消息

然后我们三个队列则都会收到消息

点击队列进去可以查看到我们发的内容

2.route(direct)

该类型交换机需要指定RoutingKey,会将消息发送到匹配的队列中

同样是先创建一个交换机,type选择direct

然后点击该交换机进去,点击bindings绑定,同样是绑定3个队列,但是给每个队列都新增了key选项

然后继续在该界面使用publish message投递消息

可以看到在此处我们写了keyemail,这样的话,就会只有queue1收到消息,queue1Messages变为了2

3.topic

topic模式其实和route(direct)模式很相似,只不过topic模式属于模糊匹配,route为精确匹配

同样是先创建一个交换机,type选择topic

然后点击该交换机进去,点击bindings绑定,同样是绑定3个队列,并给每个队列赋予key

这里注意编写规则:topic的routingkey可以指定为*.*.com形式,*代表匹配一个单词,#代表可以匹配多个

然后继续在该界面使用publish message投递消息

可以看到我要传递的key规则是匹配queue2队列的,所以该消息将会投递至queue2

4.headers

Headers模式和前面三种匹配方式完全不一样,它不依赖key,而是在绑定队列和交换机的时候指定一个键值对,当交换机在分发消息的时候会先解开消息体里的headers对,如果发现匹配成功,才将消息分发到队列中,这种交换机类型在性能上相对说较差,实际工作中很少使用。


  • 从消息性能对比,fanout>direct>topic>headers

 

posted @ 2022-03-31 09:05  RFAA  阅读(660)  评论(0编辑  收藏  举报