消息队列和RabbitMQ简介
消息队列,是在消息的传输过程中保存消息的容器(中间件)。多用于分布式系统之间进行通信。
使用消息队列的优缺点
优点:
- 应用解耦(容错性、可维护性)
- 异步提速(用户体验、吞吐量)
- 削峰填谷(稳定性)
缺点:
- 系统可用性降低 (MQ宕机?如何保证MQ高可用?)
- 系统复杂度提高 (消息的顺序性?重复消费问题?)
- 一致性问题 (某个分布式系统处理失败如何保证一致性?)
使用MQ条件
-
生产者不需要从消费者处获取反馈 容许短暂的不一致性 使用后利大于弊
RabbitMQ简介
AMQP(Advanced Message Queuing Protocol)高级消息队列协议,是一个应用层网络协议。RabbitMQ基于AMQP协议设计,采用Erlang语言开发,其基础架构如下: Broker:接受和分发消息的应用。 Virtual host:虚拟分组。 Connection:publisher/consumer和broker之间的TCP连接。 Channel:通道,轻量级通信连接。 Exchange:交换机,分发消息到Queue中。 Queue:存储消息的队列。 Binding:exchange和queue间的虚拟连接。
RabbitMQ的六种工作模式:简单模式、work queues、发布与订阅模式、路由模式、主题模式、远程调用模式。
JMS(JavaMessage Service):Java消息服务应用程序接口,JavaEE规范中的标准。
