RabbitMQ 简介
是一个开源的 实现,服务器端用Erlang语言编写,支持多种客户端,如: 等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
,即 ,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如: 等,支持 。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
常用概念
通常我们谈到队列服务, 会有三个概念: 发消息者、队列、收消息者, 在这个基本概念之上, 多做了一层抽象, 在发消息者和 队列之间, 加入了交换器 ( ). 这样发消息者和队列就没有直接联系, 转而变成发消息者把消息给交换器, 交换器根据调度策略再把消息再给队列。
准备环境安装
任选其一
CentOs7.3 搭建 RabbitMQ 3.6 单机服务与使用
http://www.ymq.io/2017/08/16/rabbit-install/
CentOs7.3 搭建 RabbitMQ 3.6 Cluster 集群服务与使用
http://www.ymq.io/2017/08/17/rabbit-install-cluster/
Github 代码
代码我已放到 Github ,导入 项目
github https://github.com/souyunku/spring-boot-examples/tree/master/spring-boot-rabbitmq
添加依赖
在项目中添加 依赖
参数配置
交换机(Exchange)
1.Direct Exchange根据route key 直接找到队列
2.Topic Exchange根据route key 匹配队列
3.Topic Exchange不处理route key 全网发送,所有绑定的队列都发送
Direct Exchange
是 默认的交换机模式,也是最简单的模式,根据 全文匹配去寻找队列。
任何发送到 的消息都会被转发到 中指定的 。
1.一般情况可以使用 自带的 (该 的名字为空字符串,下文称其为 )。
2.这种模式下不需要将 进行任何绑定( )操作
3.消息传递时需要一个 ,可以简单的理解为要发送到的队列名字。
4.如果 中不存在 中指定的队列名,则该消息会被抛弃。
配置队列
监听队列
发送消息
按顺序执行:响应
Fanout Exchange
任何发送到 的消息都会被转发到与该 绑定 的所有 。
1.可以理解为路由表的模式
2.这种模式不需要
3.这种模式需要提前将 与 进行绑定,一个 可以绑定多个 ,一个 可以同多个 进行绑定。
4.如果接受到消息的 没有与任何 绑定,则消息会被抛弃。
配置队列
监听队列
发送消息
按顺序执行:响应
Topic Exchange
任何发送到 的消息都会被转发到所有关心 中指定话题的 上
1.这种模式较为复杂,简单来说,就是每个队列都有其关心的主题,所有的消息都带有一个 , 会将消息转发到所有关注主题能与 模糊匹配的队列。
2.这种模式需要 ,也许要提前绑定 与 。
3.在进行绑定时,要提供一个该队列关心的主题,如 表示该队列关心所有涉及log的消息(一个RouteKey为 的消息会被转发到该队列)。
4. 表示0个或若干个关键字, 表示一个关键字。如 能与 匹配,无法与 匹配;但是 能与上述两者匹配。
5.同样,如果 没有发现能够与 匹配的 ,则会抛弃此消息。
配置队列
监听队列
发送消息
按顺序执行:响应
代码我已放到 Github ,导入 项目
github https://github.com/souyunku/spring-boot-examples/tree/master/spring-boot-rabbitmq
Contact
领取专属 10元无门槛券
私享最新 技术干货