一、RabbitMQ
简介:
RabbitMQ 是一个用 Erlang 语言开发的 AMQP 开源实现。AMQP(Advanced Message Queue Protocol),高级消息队列协议,是异步消息处理领域的一个公开标准,主要由 Cisco、RedHat 等联合制定。而 RabbitMQ 就是 AMQP 的一个开源实现,由 RabbitMQ Technologies Ltd 公司开发并提供商业支持。
RabbitMQ 主要应用于大型系统中不同的应用或者子系统之间的通信,通过分隔数据的发送和接收来解耦应用。
一条消息的“一生”
在对 RabbitMQ 进行更进一步的介绍之前,先让我们来看一看在 RabbitMQ 中,一条消息,从生产者到消费者完整的轨迹。
当生产者发布一条消息时,首先跟 RabbitMQ 建立连接(channel),通过该连接将想要发布的消息发送到交换器(exchange)上。交换器通过特定的路由规则(routing_key),将消息发送到某个队列(queue)。RabbitMQ 会监控该队列,一旦发现有消费者订阅了该队列,就将消息发送给消费者进行处理,然后将该消息从队列中删除。
需要注意的是,这里提到的生产者和消费者只是消息发送和接收的概念体现,每个客户端都可以是消费者或生产者。
接下来,对上面涉及到的一些重要的概念进行进一步的介绍。
MQ定义:
消息队列的目的是为了实现各个APP之间的通讯,APP基于MO实现消息的发送和接收实现应用程序之间的通讯,这样多个应用程序可以运行在不同的主机上,通过MQ就可以实现夸网络通信,因此MQ实现了业务的解唿和异步机制。
MQ使用场合:
消息队列作为高并发系统的核心组件之一,能够帮助业务系统结构提升开发效率和系统稳定性,消息队列主要具有以下特点:,
削峰填谷(主要解决瞬时写压力大于应用服务器导致消息丢失,系统崩溃等问题)
系统解耦(解决不同重要程度,不同的能力级别系统之间依赖导致一死全死的现象)
提升性能(当存在一对多调用时,可以发一条消息给消息系统,让消息系统通知相关服务)
蓄流压测(线上有些链路不好压测,可以堆积一定量消息再放开来压测)
MQ分类:
目前主流的消息队列软件有RabbitMQ、kafka、ActiveMQ、RocketMQ等,还有小众的消息队列软件如zeroMQ、Apache Qpid等。
一、RabbitMQ :
官方地址: https://www.rabbitmq.com/
官方地址: https://www.erlang.org/

2、Producer(生产者):MQ 的客户端之一,调用 Broker 提供的 RPC 接口发送消息。
3、Consumer(消费者):MQ 的另外一个客户端,调用 Broker 提供的 RPC 接口接收消息,同时完成消费确认。

浙公网安备 33010602011771号