MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。
应用场景
- 任务异步处理
- 应用程序解耦
常见消息队列
ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ、Redis
下载安装
- Docker
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
注: management版本的才带有管理界面
http://ip:15672
默认账号: guest
默认密码: guest
rabbitmq需要有映射以下端口: 5671 5672 4369 15671 15672 25672
15672 (if management plugin is enabled)
15671 management监听端口
5672, 5671 (AMQP 0-9-1 without and with TLS)
4369 (epmd) epmd 代表 Erlang 端口映射守护进程
25672 (Erlang distribution)
RabbitMQ工作原理
-
基本结构
- Broker
消息队列服务进程,此进程包括两个部分:Exchange和Queue - Exchange
消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑 - Queue
消息队列,存储消息的队列,消息到达队列并转发给指定的消费方 - Producer
消息生产者,即生产方客户端,生产方客户端将消息发送到MQ - Consumer
消息消费者,即消费方客户端,接收MQ转发的消息
发送消息
1、生产者和Broker建立TCP连接。
2、生产者和Broker建立通道。
3、生产者通过通道消息发送给Broker,由Exchange将消息进行转发。
4、Exchange将消息转发到指定的Queue(队列)
接收消息
1、消费者和Broker建立TCP连接
2、消费者和Broker建立通道
3、消费者监听指定的Queue(队列)
4、当有消息到达Queue时Broker默认将消息推送给消费者。
5、消费者接收到消息。