项目结构
- rocketmq-spring分为build和demo两块内容
- build中的核心是rocketmq-spring-boot工程
- demo则给出了调用 consumer和producer的样例
- rocketmq-spring-boot核心是
类名 | 描述 |
---|---|
RocketMQTemplate | 和spring集成可无缝发送或接收消息 |
DefaultRocketMQListenerContainer | 监听器 |
RocketMQAutoConfiguration | 配置类 |
build 分析
rocketmq-spring-boot初始化加载由spring.factories指定
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.apache.rocketmq.spring.config.RocketMQAutoConfiguration
支持的服务
根据官网描述 支持的服务如下,在 RocketMQTemplate 可找到
服务类型 | 对应方法 |
---|---|
同步发送 | syncSend |
同步顺序发送 | syncSendOrderly |
异步发送 | asyncSend |
异步顺序发送 | asyncSendOrderly |
one-way方式发送 | sendOneWay /sendOneWayOrderly |
事务方式发送 | sendMessageInTransaction |
顺序消费 | ConsumeMode |
并发消费(广播/集群) | MessageModel |
未实现 |
需要注意的是 顺序消费和并发消费只是消息的消费模式,因此是定义为enum的,不是实现的方法,这也是为了以后的扩展性考虑
RocketMQTemplate 几个要点
-
定义 ConcurrentHashMap类型的队列cache用于事务消息时对事务的控制,其他方式的消息没用到此参数
-
默认charset是UFT-8
-
定义为
public class RocketMQTemplate extends AbstractMessageSendingTemplate<String> implements InitializingBean, DisposableBean
因此可确定
- RocketMQTemplate 实现 DisposableBean 可自动销毁, 需要实现 destroy 方法
- 使用 @Resource注解自动加载 RocketMQTemplate
demo分析
- client通过使用注解
@RocketMQMessageListener
完成对消息的监听,可指定topic、selectorExpression和 consumerGroup - client通过实现
RocketMQListener
接口消费消息
总结
- 对producer的支持较多,没有对consumer的模板化资源支持
- 其他可参考 README_zh_CN.md