在选择MQ之前我们要想清楚为什么要使用MQ
使用场景
比如在下单之后要给用户添加积分,通知物流发货等…如果这些操作我们全部在下单接口当中处理,那么接口性能将会非常低下.
使用MQ之后会带来什么问题
- 增加了系统的复杂性
- 要考虑消息丢失的问题
- 一致性,比如收到消息后要三个系统都执行完成才算流程结束,但是某个系统可能挂了,但是还是返回的成功
会带来什么好处
- 提高系统的相应速度
- 削峰填谷
- 增加吞吐量
各种MQ的特点
ActiveMQ
ActiveMQ:可能存在消息丢失,吞吐量万级,社区不够活跃,可能会遇到不可解决的bug,偶尔可能会丢失消息
RabbitMQ
RabbitMQ:中小型公司的选择。社区特别活跃,但想要自己维护很难,因为语言是erlang,java工程师很难读懂。吞吐量可以达到万级
RocketMQ
RocketMQ:阿里的开源项目,社区相对活跃,建议大型公司使用,即使官网不维护了,本公司也要有实力自己维护(java写的)。经过阿里双十一验证的 性能可达到十万级,并且有多种消息模式
kafka
kafka:功能比较简单,吞吐超高,如果是大数据方面的业务,用这个毫无问题,但是有可能消息重复消费,API比较少
建议
一般情况下建议中小公司使用rabbitmq,大公司或者有专门的人员研究中间件的公司可以使用rocketmq
版权声明:本文为qq_44787151原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。