Rabbit MQ
MQ 简介
MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。RabbitMQ官方地址:http://www.rabbitmq.com/
基本结构图
组件说明:
Broker:消息队列服务进程,此进程包括两个部分Exchange和Queue;
Exchange:消息队列交换机,按一定规则将消息路由转发到某个队列,对消息进行过滤;
Queue:消息队列,存储消息的队列,消息到达队列,并转发给指定的消费方;
Producer:消息生产者,既生产客户端,将生成的消息发送到MQ;
Consumer:消息消费者,既接收MQ的消息;
Channel:通道。
消息发布流程
发送信息:
1.生产者和Broker建立TCP连接;
2.生产者和Broker建立通道;
3.生产者通过通道消息发送给Broker,有Exchange将消息进行转发
4.Exchange交消息转发给制定的队列(queue)
接收信息
1、消费者和Broker建立TCP连接
2、消费者和Broker建立通道
3、消费者监听指定的Queue(队列)
4、当有消息到达Queue时Broker默认将消息推送给消费者。
5、消费者接收到消息。
应用场景
异步处理:提高处理的时间;
应用解耦:A系统操作后通知B系统,传统的做法就A系统调用B系统的接口,这种做法有个弊端,当B系统出 故障时,会影响A系统,这是紧耦合。引入消息队列,A系统操作,完成持久化后,将消息写入消息队列,返回给用户操作成功,然后B系统订阅消息,在进行操作。这样就算B系统出故障了,也不会影响A系统的操作,这就是解耦;
流量削峰:(秒杀活动)一般流量过大,导致应用挂掉,但在应用之前加消息队列。可以控制活动人数,超过一定阈值会直接丢弃掉,可以缓解短时间的高流量压垮应用。
简单代码示例
1,添加依赖
2.生产者
3.消费者