如果传入的 routing key 为 black,不会转发到black.green 。Direct 类型交换器是完全匹配、单播的模式 。

文章插图
2.2.2、TopicTopic 类型交换器转发消息和 Direct 一样,不同的是:它支持通配符转发,相比 Direct 类型更加灵活!
两种通配符:*只能匹配一个单词,#可以匹配零个或多个 。
如果传入的 routing key 为 black#,不仅会转发到black,也会转发到black.green 。

文章插图
2.2.3、Headersheaders 也是根据规则匹配, 相比 direct 和 topic 固定地使用 routing_key , headers 则是通过一个自定义匹配规则的消息头部类进行匹配 。
在队列与交换器绑定时,会设定一组键值对规则,消息中也包括一组键值对( headers 属性),当这些键值对有一对, 或全部匹配时,消息被投送到对应队列 。
此外 headers 交换器和 direct 交换器完全一致,但性能差很多,目前几乎用不到了 。

文章插图
2.2.4、FanoutFanout 类型交换器与上面几个不同,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了 routing_key 会被忽略,也被成为消息广播模式 。很像子网广播,每台子网内的主机都获得了一份复制的消息
fanout 类型转发消息在四种类型中是最快的 。

文章插图
三、RabbitMQ 安装RabbitMQ 基于 erlang 进行通信,相比其它的软件,安装有些麻烦,为了跟生产环境保持一直,操作系统选择centos7,不过本例采用rpm方式安装,任何新手都可以完成安装,过程如下!
3.1、安装前命令准备输入如下命令,完成安装前的环境准备 。
yum install lsof build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz wget vim3.2、下载 RabbitMQ、erlang、socat 的安装包本次下载的是RabbitMQ-3.6.5版本,采用rpm一键安装,适合新手直接上手 。先创建一个rabbitmq目录,本例的目录路径为/usr/App/rabbitmq,然后在目录下执行如下命令,下载安装包!
- 下载erlang
wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm- 下载socat
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm- 下载rabbitMQ
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm最终目录文件如下:
文章插图
3.3、安装软件包【深入剖析 rabbitMQ】下载完之后,按顺序依次安装软件包,这个很重要哦~
- 安装erlang
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm- 安装socat
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm- 安装rabbitmq
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm安装完成之后,修改rabbitmq的配置,默认配置文件在/usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin目录下 。
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app修改loopback_users节点的值!
文章插图
最后只需通过如下命令,启动服务即可!
rabbitmq-server start &运行脚本之后,如果报错,例如下图!
文章插图
解决办法如下:
vim /etc/rabbitmq/rabbitmq-env.conf在文件里添加一行,如下配置!NODENAME=rabbit@localhost然后,再保存!再次以下命令启动服务!rabbitmq-server start &通过如下命令,查询服务是否启动成功!lsof -i:5672
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 深入理解 Linux 内核中的 RCU 机制
- 深入设计原则-SOLID
- 深入理解 HttpSecurity
- 什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?
- 资深架构师:深入聊聊获取屏幕高度这件事
- 从 Spring Boot 程序启动深入理解 Netty 异步架构原理
- docker安装rabbitmq延时队列插件
- 解密windows系统版本和版本号,深入了解一组简单数字背后的故事
- 详解版 深入浅出 HTTPS
- Linux主流架构运维工作简单剖析
