以上图为例,如果发送消息的时候设置路由键为“warning”,那么消息会路由到 Queue1 和 Queue2。如果在发送消息的时候设置路由键为"Info”者"debug”,消息只会路由到Queue2。如果以其他的路由键发送消息,则消息不会路由到这两个队列中。
direct 类型常用在处理有优先级的任务,根据任务的优先级把消息发送到对应的队列,这样可以指派更多的资源去处理高优先级的队列。
③ topic
前面讲到direct类型的交换器路由规则是完全匹配 BindingKey
和 RoutingKey
,但是这种严格的匹配方式在很多情况下不能满足实际业务的需求。topic类型的交换器在匹配规则上进行了扩展,它与 direct 类型的交换器相似,也是将消息路由到 BindingKey
和 RoutingKey
相匹配的队列中,但这里的匹配规则有些不同,它约定:
- RoutingKey 为一个点号“.”分隔的字符串(被点号“.”分隔开的每一段独立的字符串称为一个单词),如
“com.rabbitmq.client”
、“java.util.concurrent”
、“com.hidden.client”
; - BindingKey 和 RoutingKey 一样也是点号“.”分隔的字符串;
- BindingKey 中可以存在两种特殊字符串“”和“#”,用于做模糊匹配,其中“”用于匹配一个单词,“#”用于匹配多个单词(可以是零个)。
以上图为例:
- 路由键为 “com.rabbitmq.client” 的消息会同时路由到 Queuel 和 Queue2;
- 路由键为 “com.hidden.client” 的消息只会路由到 Queue2 中;
- 路由键为 “com.hidden.demo” 的消息只会路由到 Queue2 中;
- 路由键为 “java.rabbitmq.demo” 的消息只会路由到Queuel中;
- 路由键为 “java.util.concurrent” 的消息将会被丢弃或者返回给生产者(需要设置 mandatory 参数),因为它没有匹配任何路由键。
④ headers(不推荐)
headers 类型的交换器不依赖于路由键的匹配规则来路由消息,而是根据发送的消息内容中的 headers属性进行匹配。在绑定队列和交换器时制定一组键值对,当发送消息到交换器时,RabbitMQ会获取到该消息的 headers(也是一个键值对的形式)'对比其中的键值对是否完全匹配队列和交换器绑定时指定的键值对,如果完全匹配则消息会路由到该队列,否则不会路由到该队列。headers 类型的交换器性能会很差,而且也不实用,基本上不会看到它的存在。
参考资料:《Java中高级核心知识全面解析》
获取方式:私信【资料】
免费获取
还有更多Java PDF学习资料等你来拿!!!
二、安装 RabbitMq
通过 Docker 安装非常方便,只需要几条命令就好了,我这里是只说一下常规安装方法。
前面提到了 RabbitMQ 是由 Erlang语言编写的,也正因如此,在安装RabbitMQ 之前需要安装Erlang。
注意:在安装 RabbitMQ 的时候需要注意 RabbitMQ 和 Erlang 的版本关系,如果不注意的话会导致出错,两者对应关系如下:
1.安装 erlang
1)下载 erlang 安装包
在官网下载然后上传到 Linux 上或者直接使用下面的命令下载对应的版本。
[root@SnailClimb local]#wget http://erlang.org/download/otp_src_19.3.tar.gz
2)解压 erlang 安装包
[root@SnailClimb local]#tar -xvzf otp_src_19.3.tar.gz
3) 删除 erlang 安装包
[root@SnailClimb local]#rm -rf otp_src_19.3.tar.gz
4)安装 erlang 的依赖工具
[root@SnailClimb local]#yum -y install make gcc gcc-c++ kernel-devel m4 ncurses- devel openssl-devel unixODBC-devel
5)进入erlang 安装包解压文件对 erlang 进行安装环境的配置
新建一个文件夹
[root@SnailClimb local]# mkdir erlang
对 erlang 进行安装环境的配置
[root@SnailClimb otp_src_19.3]#
./configure --prefix=/usr/local/erlang --without-j
6)编译安装
[root@SnailClimb otp_src_19.3]#
make && make install
7)验证一下 erlang 是否安装成功了
[root@SnailClimb otp_src_19.3]# ./bin/erl
运行下面的语句输出“hello world”
io:format(“hello world~n”, []).
大功告成,我们的 erlang 已经安装完成。
8)配置 erlang 环境变量
[root@SnailClimb etc]# vim profile
追加下列环境变量到文件末尾
#erlang
ERL_HOME=/usr/local/erlang
PATH=
E
R
L
H
O
M
E
/
b
i
n
:
ERL_HOME/bin:
ERLHOME/bin:PATH
export ERL_HOME PATH
运行下列命令使配置文件 profile
生效
[root@SnailClimb etc]# source /etc/profile
输入 erl 查看 erlang 环境变量是否配置正确
[root@SnailClimb etc]# erl
2.安装 RabbitMQ
1)下载rpm
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server- 3.6.8-1.el7.noarch.rpm
2)安装rpm
rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
紧接着执行:
yum install rabbitmq-server-3.6.8-1.el7.noarch.rpm
中途需要你输入"y"才能继续安装。
3)开启 web 管理插件
rabbitmq-plugins enable rabbitmq_management
4)设置开机启动
chkconfig rabbitmq-server on
5)启动服务
service rabbitmq-server start
6)查看服务状态
service rabbitmq-server status
7)访问 RabbitMQ 控制台
浏览器访问:http://你的ip地址:15672/
默认用户名和密码: guest/guest;但是需要注意的是:guestuest用户只是被容许从localhost访问。官网文档描述如下:
“guest” user can only connect via localhost
解决远程访问 RabbitMQ 远程访问密码错误
新建用户并授权
[root@SnailClimb rabbitmq]# rabbitmqctl add_user root root
Creating user “root” …
[root@SnailClimb rabbitmq]# rabbitmqctl set_user_tags root administrator
Setting tags for user “root” to [administrator] …
[root@SnailClimb rabbitmq]#
[root@SnailClimb rabbitmq]# rabbitmqctl set_permissions -p / root “." ".” “.*” Setting permissions for user “root” in vhost “/” …
再次访问:http://你的ip地址:15672/ ,输入用户名和密码:root root
参考资料:《Java中高级核心知识全面解析》
获取方式:私信【资料】
免费获取
还有更多Java PDF学习资料等你来拿!!!
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!