SpringBoot中使用RabbitMQ

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

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180117G07EFZ00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区