消息队列MQ技术选型
四大消息中间件(ActiveMQ、RabbitMQ、RocketMQ、Kafka)相信大家都不陌生,在这里不做过多介绍,如果你的业务复杂度暂时还不需要专业的消息中间件,但又想实现消息队列功能,在SpringBoot、SpringCloud框架横行的年代,我相信Redis是必不可少的,使用Redis来实现消息队列可以降低系统的维护成本和实现复杂度,本篇介绍基于PUB/SUB-订阅发布模式方案
封装功能(适用于SpringBoot、SpringCloud框架)
1:消息发送
2:消息消费(抽象模版模式)
3:支持生产者设置消息是否持久化(配置)
4:自动提交消费状态(切面)
优点
1:微服务场景Redis必用,不需要额外的服务器资源
2:轻量,易用
缺点
1:本身不支持消息持久化(可采用本地消息表解决)
2:无ack相关(采用消费加锁、本地消息表解决消息重复消费场景)
3:发布订阅是广播,分布式部署消费者场景一定要加分布式锁、幂等控制
废话不多少,直接上代码
项目结构解释
ssm-redis-mq:父包
ssm-common:公共包,生产者、消费者、监听封装,公共vo(监听配置)
ssm-order:订单服务(生产者)
ssm-warehouse:库存服务(消费者)
ssm-common详解
Producer-发送消息
Consumer-消费消息
验证
producer-生产者
consumer-消费者
关联:消息队列、发布订阅、Redis-Stream、消息中间件封装、消息队列封装
如有问题,欢迎指正,谢谢!