1.概述

RocketMQ 是什么?

FROM 《消息中间件 Apache RocketMQ》

RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。同时,广泛应用于多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。

具有以下特点:

  • 能够保证严格的消息顺序
  • 提供丰富的消息拉取模式
  • 高效的订阅者水平扩展能力
  • 实时的消息订阅机制
  • 亿级消息堆积能力
  • Metaq3.0 版本改名,产品名称改为 RocketMQ

2.RocketMQ-Spring

RocketMQ-Spring 项目,RocketMQ 对 Spring 的集成支持。主要有两方面的功能:

  • 功能一:支持 Spring Message 规范,方便开发者从其它 MQ 快速切换到 RocketMQ 。
  • 功能二:帮助开发者在 Spring Boot 中快速集成 RocketMQ 。

2.1.功能一

FROM 《我用这种方法在 Spring 中实现消息的发送和消息》

Spring Messaging 是 Spring Framework 4 中添加的模块,是Spring 与消息系统集成的一个扩展性的支持。它实现了从基于 JmsTemplate 的简单的使用 JMS 接口到异步接收消息的一整套完整的基础架构,Spring AMQP 提供了该协议所要求的类似的功能集。在与 Spring Boot 的集成后,它拥有了自动配置能力,能够在测试和运行时与相应的消息传递系统进行集成。

单纯对于客户端而言,Spring Messaging 提供了一套抽象的 API 或者说是约定的标准,对消息发送端和消息接收端的模式进行规定,不同的消息中间件提供商可以在这个模式下提供自己的 Spring 实现:

在消息发送端,需要实现的是一个 XXXTemplate 形式的 Java Bean ,结合 Spring Boot 的自动化配置选项提供多个不同的发送消息方法;

在消息的消费端,是一个 XXXMessageListener 接口(实现方式通常会使用一个注解来声明一个消息驱动的 POJO ),提供回调方法来监听和消费消息,这个接口同样可以使用 Spring Boot 的自动化选项和一些定制化的属性。

如果有兴趣深入的了解 Spring Messaging 及针对不同的消息产品的使用,推荐阅读这个文件。参考 Spring Messaging 的既有实现, RocketMQ 的 spring-boot-starter 中遵循了相关的设计模式,并结合 RocketMQ 自身的功能特点提供了相应的 API(如,顺序,异步和事务半消息等)。

2.2.功能二

RocketMQ-Spring 就是基于 Spring Message 来实现 RocketMQ 的发送端和接收端。

RocketMQ 的官方 spring-boot-starter 时间轴:

  • 2014-08 Spring Boot 1 正式发布。
  • 2018-03 Spring Boot 2 正式发布。
  • 2018-12 RocketMQ 团队发布 RocketMQ 集成到 Spring Boot 的解决方案,并且提供了中文文档

3.示例

3.1.三种发送消息的方式

3.2.批量发送消息