RocketMQ 是阿里巴巴团队使用Java
语言开发的一个分布式、队列模型的消息中间件,后开源给Apache
基金会成为了Apache
的顶级开源项目,具有高性能、高可靠、高实时、分布式特点。
RocketMQ 主要由Producer
、Broker
、Consumer
、NameServer
组成;其中Producer
负责生产消息;Consumer
负责消费消息;Broker
是MQ
服务,负责接收、分发消息;NameServer
是路由中心,负责MQ
服务之间的协调。
1. Centos安装RocketMQ
- 官网下载
RocketMQ
安装包
1 | 进入自定义软件安装目录 |
- 解压安装(环境基于
JDK1.8
或以上)
1 | 解压 |
- 修改配置
1 | RocketMQ的默认内存占用非常高,是4×4g的,将4g调整为512m |
- 配置
RocketMQ
的环境变量
1 | 编辑/etc/profile |
- 启动
RockerMQ
顺序
1 | 先启动 NameServer,然后启动 Broker |
- 关闭
RockerMQ
顺序
1 | 先关闭Broker,再关闭NameServer |
- 启动日志
1 | 查看 Name Server 启动日志 |
- 防火墙
- 若外网
IP
调试,关闭防火墙 或 开放防火墙端口9876,10911
- 若外网
1 | NameServer默认端口:9876 |
2. SpringBoot 整合 RocketMQ
pom.xml
引入组件rocketmq-spring-boot-starter
依赖
1 | <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter --> |
- 修改
application.yml
,添加RocketMQ
相关配置
1 | # 多个name-server(集群)使用英文;分割 |
- 消息生产者
1 |
|
- 消费者
1 | /** |
- 测试类
1 |
|
- 运行结果
1
2
3
4
5
6
72021-06-10 14:56:25.180 INFO 17720 --- [ main] a.r.s.s.DefaultRocketMQListenerContainer : running container: DefaultRocketMQListenerContainer{consumerGroup='test-group', nameServer='192.168.2.100:9876', topic='test-topic', consumeMode=CONCURRENTLY, selectorType=TAG, selectorExpression='*', messageModel=CLUSTERING}
2021-06-10 14:56:25.188 INFO 17720 --- [ main] o.a.r.s.a.ListenerContainerConfiguration : Register the listener to container, listenerBeanName:messageConsumer, containerBeanName:org.apache.rocketmq.spring.support.DefaultRocketMQListenerContainer_1
2021-06-10 14:56:25.230 INFO 17720 --- [ main] c.e.fastdfsdemo.DemoApplicationTests : Started DemoApplicationTests in 10.371 seconds (JVM running for 13.888)
2021-06-10 14:56:26.410 INFO 17720 --- [ main] c.e.fastdfsdemo.DemoApplicationTests : 生产一条消息:Hello RocketMQ!
2021-06-10 14:56:26.426 INFO 17720 --- [MessageThread_1] c.e.f.rocketmq.MessageConsumer : 收到的消息是: Hello RocketMQ!
2021-06-10 14:56:26.496 INFO 17720 --- [lientSelector_1] RocketmqRemoting : closeChannel: close the connection to remote address[192.168.2.100:10911] result: true
2021-06-10 14:56:26.496 INFO 17720 --- [lientSelector_1] RocketmqRemoting : closeChannel: close the connection to remote address[192.168.2.100:9876] result: true