选择使用RabbitMQ是因为RabbitMQ的功能比较丰富 , 支持各种消息收发模式(简单队列模式, 工作队列模式 , 路由模式 , 直接模式 , 主题模式等) , 支持延迟队列 , 惰性队列而且天然支持集群, 保证服务的高可用, 同时性能非常不错 , 社区也比较活跃, 文档资料非常丰富
使用MQ有很多好处:
● 吞吐量提升:无需等待订阅者处理完成,响应更快速
● 故障隔离:服务没有直接调用,不存在级联失败问题
● 调用间没有阻塞,不会造成无效的资源占用
● 耦合度极低,每个服务都可以灵活插拔,可替换
● 流量削峰:不管发布事件的流量波动多大,都由Broker接收,订阅者可以按照自己的速度去处理事件
使用MQ也有很多缺点:
● 架构复杂了,业务没有明显的流程线,不好管理
● 需要依赖于Broker的可靠、安全、性能