简介
ActiveMQ
老牌中间件, 中小型公司使用,综合能力一般
RabbitMQ
老牌中间件,金融行业使用居多,稳定性有保障
RocketMQ
新兴中间件,专门针对互联网业务场景应用,各项指标优秀
Kafka
新兴中间件,专门针对互联网行业大数据分析,各项指标优秀
消息队列应用场景
服务解耦(弱依赖)
如果是强依赖,我们就采用一些直连的方式,比如同步的 Dubbo 调用、同步的 Http 或 Spring Cloud,或JRPC。
弱依赖就可以选用消息中间件,做消息解耦。
弱依赖不代表可以失败,比如上游的服务做消息的发送,下游服务一定要收到这条消息,此时就需要上游服务做可靠性投递。
削峰填谷
如果在生产环境中,存在即时性要求高,并且流量很大的情况下,比如说秒杀或大促,就要做削峰填谷。
当下游服务处理不过来的时候,可以把消息缓存,然后慢速消费。
异步化缓冲
消息队列特性考量
1、生产端可靠性投递
2、消费端幂等
3、高可用
4、低延迟
5、可靠性(一般都是副本方式)
6、消息堆积能力
7、扩展性(如简单的扩容