SpringBoot整合RocketMQ

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot整合RocketMQ相关的知识,希望对你有一定的参考价值。

参考技术A

Apache RocketMQ作为阿里开源的一款高性能、高吞吐量的分布式消息中间件。
支持Broker和Consumer端消息过滤,支持发布订阅模型和点对点,支持拉pull和推push两种消息模式,单一队列百万消息、亿级消息堆积,支持单master节点,多master节点,多master多slave节点,任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式,消息失败重试机制、支持特定level的定时消息,新版本底层采用Netty,4.3.x支持分布式事务,适合金融类业务,高可用性跟踪和审计功能。

Producer :消息生产者
Producer Group :消息生产者组,发送同类消息的一个消息生产组
Consumer :消费者
Consumer Group :消费同类消息的多个实例
Tag :标签,子主题(二级分类)对topic的进一步细化,用于区分同一个主题下的不同业务的消息
Topic :主题, 如订单类消息,queue是消息的物理管理单位,而topic是逻辑管理单位。一个topic下可以有多个queue,
默认自动创建是4个,手动创建是8个
Message :消息,每个message必须指定一个topic
Broker :MQ程序,接收生产的消息,提供给消费者消费的程序
Name Server :给生产和消费者提供路由信息,提供轻量级的服务发现、路由、元数据信息,可以多个部署,互相独立(比zookeeper更轻量)
Offset : 偏移量,可以理解为消息进度
commit log : 消息存储会写在Commit log文件里面

1、添加maven依赖

2、新建jms包,JMSConfig类,设置配置常量

3、新建生产者PayProducer

4、新建PayController

这个时候,启动应用,访问api/sync路径,会报没有这个topic异常

需要去管控台手工创建topic,或者将SpringBoot依赖的RocketMQ版本与服务端RocketMQ的版本改成一样的,也可以。例如我的pom.xml文件中,依赖的版本是4.3.0,而服务器上部署的RocketMQ版本是4.4.0,就不会自动创建topic。
创建topic之后,再次访问访问api/sync路径,会报下面异常

在conf/broker.conf文件中添加如下配置

然后指定配置文件启动Broker,返回上一级,然后重启Broker

或者使用守护进程方式启动Broker

再次访问api/sync,返回成功

RocketMQ管控台也可查询此消息

新建PayConsumer

访问: http://localhost:8080/api/sync?text=test
控制台打印:

以上是关于SpringBoot整合RocketMQ的主要内容,如果未能解决你的问题,请参考以下文章

[SpringBoot系列]SpringBoot如何整合SSMP

springboot怎么整合activiti

SpringBoot完成SSM整合之SpringBoot整合junit

springboot整合jedis

SpringBoot 整合其他框架 -- SpringBoot整合Mybatis

SpringBoot 整合其他框架 -- SpringBoot整合Junit