MQ全程Message Queue,是在消息传输过程中保存消息的容器,多用于分布式系统之间进行通信。
1、MQ的优势:
1.应用解耦:系统耦合度越高,容错性就越低,可用性就越低。使用MQ将系统进行隔离,可以提高系统的容错性。
2.异步提速:在用户进行操作后,将信息发送到MQ后就返回。后续的业务流程通过MQ异步进行处理。可以提高用户体验和系统吞吐量。
3.削峰填谷:当大量消息集中进入系统时,可以用MQ将信息暂存起来,系统从MQ中取出积压消息有序处理,避免系统崩溃。
2、MQ的劣势:
1.系统可用性降低:系统引入的外部依赖越多,系统稳定性越差。一旦MQ宕机,就会对业务造成影响,需要提高MQ的可用性。
2.系统复杂度提高:需要额外考虑消息是否被重复消费(幂等性问题),消息丢失,消息的顺序等问题。
3.一致性问题:如果A系统通过MQ向多个系统其他系统发送消息,有的系统正常接受,有的系统没有接受,造成数据不一致。
3、使用MQ需要满足的条件:
1.生产者不需要从消费者处获得反馈。
2.允许短暂的不一致性。
3.收益大于成本。
4、常见的MQ产品:
5、RabbitMQ简介
RabbitMQ使用Erlang语言开发,采用AMQP(高级消息队列)协议,AMQP是一个应用层协议。
RabbitMQ的6种工作模式:
1.简单模式(Hello World)
2.工作队列模式(Work Queue)
3.发布订阅模式(Publish/Subscribe)
4.路由模式(Routing)
5.主题模式(Topics)
6.RPC远程过程调用
7.发布确认模式(Publisher Confirms)
6、JMS介绍
JMS即Java消息服务(JavaMessage Service)应用程序接口,是一个Java平台中关于面向消息中间件的API。
JMS是JavaEE的一种规范。RabbitMQ本身没有实现JMS,但在开源社区有实现。