前言
一、MQ是什么?
用高效可靠的消息机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。
二、为什么要用MQ?
如上图所示,可以将各个系统之间的交互拆开,通过消息队列去做访问,也就是实现了系统之间的解耦。
当某一时刻的访问量急剧增加的时候,如淘宝双十一,秒杀活动等。在一个时段有大量的访问者,可能会导致服务器处理不过来,导致服务器宕机。但是通过MQ去做处理的话,就不会出现突然间的大量数据的涌入,而是根据MQ的处理机制,以该有的速度匀速发布给各个处理服务器,也就保证了服务器的处理保持相对稳定的状态。
3.异步通信
通过MQ实现异步通信,提高用户的体验,以及效率,无需同步通信,一直等待,直到获取结果,才可以进行下一条数据的处理。
三、带来的问题
1.如果MQ挂了那么整个系统就不能用了
2.复杂度提高了
3.消息在链路中会出现一致性问题
提示:以下是本篇文章正文内容,下面案例可供参考
一、RabbitMQ的基本特性
高可靠、灵活路由、支持多客户端、集群与扩展性、高可用队列、权限管理、插件系统、与Spring集成Spring AMQP等等。
二、工作模型
1、broker:中间件(MQ)、存储转发
2、Connection: TCP长连接,长连接比较消耗性能,所以用在TCP里面用channel(虚拟信道)
3、Queue:真正存储东西的,有自己的进程
4、基于实践,对队列进行监听,只要有数据到达队列,就会去消费消息,并返回一个应答,queue删除取走的消息,并推送下一条
5、RabbitMQ的消息会先发送到交换机,而不会直接发送到queue,Exchange是以绑定列表,与队列是一个多对多的关系,交换机用来给不同的queue发送消息,依据绑定规则,与不同的队列绑定,交换器是为了灵活的分发
6、支持虚拟