RabbitMQ介绍
RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ主要是为了实现系统之间的双向解耦而实现的。当生产者大量产生数据时,消费者无法快速消费,那么需要一个中间层。保存这个数据。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
RabbitMQ Mac 安装
1 | ➜ ~ brew install rabbitmq |
相关信息
1 | 安装目录: |
启动
1 | ➜ ~ cd /usr/local/Cellar/rabbitmq/3.7.7_1/ |
Spring Boot 集成 RabbitMQ
配置Maven依赖
1 | <dependency> |
配置文件,配置 rabbitmq 的安装地址、端口及账户信息
1 | spring.application.name=spirng-boot-rabbitmq |
定义队列
1 |
|
发送者
AmqpTemplate 是 Spring Boot 提供的默认实现。
1 | public class HelloSender { |
接收者
注意使用注解@RabbitListener
,使用 queues 指明队列名称,@RabbitHandler
为具体接收的方法。
1 |
|
测试
1 | (SpringRunner.class) |
注意,发送者和接收者的 queue name 必须一致,不然不能接收。
让测试方法等待 1 秒,让接收者接收到消息,不然应用退出时可能还没有接收到消息。以上一个最常用简单的示例就完成了。
以上参考:
springboot(八):RabbitMQ详解