需求背景
RocketMq是一个由阿里巴巴开源的消息中间件,在设计上借鉴了Kafka,其2012年开源,2017年成为Apache顶级项目。
一般MQ适用场景如下:
1. 流量削峰,提升系统高并发处理能力,比如秒杀场景
2. 异步处理,应用解耦,提高系统吞吐量RocketMQ基础组件:
1. Producer是消息生产者
2. Consumer是消息消费者
3. Topic是消息传递中间者,其中存放的是消息逻辑地址
技术点
主要使用了两个
1. RocketMQTemplate对象(com.zc.smartcity.rocketmq.core.RocketMQTemplate)
2. spring-boot-starter-rocketmq组件
注:第2点,通过maven官方中央仓库https://search.maven.org/,搜索到了几个,我使用了最新日期的,即第一个
案例说明
场景案例分析:
1. 如何与springboot集成
2. 如何建立连接,发送不同消息数据类型
3. 如何订阅,且消费不同消息数据类型
4. 场景案例分析
代码演示
举两个例子
1. 如何与springboot集成
pom.xml文件
application.yml文件
注:这些参数含义,其英文名称理解起来应该不难,就不做进一步解释了
2. 如何建立连接,发送不同消息数据类型
完整源码下载
https://github.com/hemin1003/spring-boot-study/tree/master/spring-boot2-study/spring-boot2-parent
附加说明
使用命令新建Topic
1、安装完rocketmq后(官方安装教程),进入到apache-rocketmq目录
2、使用命令
3、如图演示
updateTopic命令主要是三个参数:
-n nameserver地址和端口,一般启动broker时要指定
-b broker_ip:broker_port,ip是启动broker机器的ip,默认是10911
-t 新主题名称
问题:注意事项(autoCreateTopicEnable=true)
1、使用默认设置autoCreateTopicEnable=true,这样会导致topic的设置不能规范管理,没有统一的审核等
2、使用默认设置autoCreateTopicEnable=true,还会造成负载均衡失效
所以,一般生产环境中会设置autoCreateTopicEnable=false
设置方式:启动broker时关闭掉,命令如下
常见错误
1、call timeout 超时异常
解决办法:调大send-message-timeout值(application.yml)
2、No route info of this topic 异常
解决方法:参考以上《附加说明》的步骤,需要先新建topic后才能发送消息或消费消息。这里不再做进一步解释
其他官方资料
1、RocketMq官方网址
2、RocketMq官方安装详细步骤,和案例演示说明
3、RocketMQ-SpringBoot官方代码Demo
4、RocketMQ-SpringBoot官方代码Demo-中文教程说明
5、RocketMQ控制台-运维管理系统搭建文档
6、RocketMQ-常见问题FAQ
下一章教程
SpringBoot从入门到精通教程(四)- @Scheduled定时器用法和场景案例分析
该系列教程
SpringBoot从入门到精通教程