项目基于rocketmq5.x,简化rocketmq的操作,使用者关注于配置文件和listener,handler,checker等具体的业务处理;
- ab 抽象工厂和接口,如生产者、消费者工厂,消息工厂等
a. factory 工厂具体实现 - anno 注解包,用于handler,listener识别
- conf 配置包,用于读取yaml配置,自定义实体,自定义枚举,redis配置等
- mock 模拟项目的使用,主要是生产者发送消息
- runner 启动类,在springboot启动时顺序执行,用于生产者、消费者启动和配置加载
- utils 工具类
- 项目大量使用抽象、工厂、单例等模式,适配度较高
- 能够自动创建topic(使用了rocketmq-admin,见runner/AutoRunning)
- 流程自动化,提供push、simple等消费者实现,支持普通、事务、顺序消息,暂未支持延迟消息,后续+
- 理想中是想支持事务消息,并且同时支持顺序消息,但rocketmq5.x不支持,4.x应该也不行,在找一个合适的解决方案,目前想到的 解决方案可能得修改消息结构,提供一张本地消息表和业务共处于一个事务,通过消息中body中的messageId来控制循序,下游再用rocketmq 事务消息消费,但这并不是一个好的解决方案;
- 生产者,simple消费者暂时都是单例,未提供生产者组或消费者组,simple消费者组感觉上需要用上4.x的手动提交位点,但5.x最佳实践 的意思是单例,使用多线程处理消息,也是项目中目前的做法;
- 提供可视化操作台,减少或避免在yaml中配置
- 增加延迟消息类型支持
- 简化代码
- 提供start