RabbitMQ简介
Intro
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。
RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适。RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议)的开源实现。
RabbitMQ作为一个消息代理,主要和消息打交道,负责接收并转发消息。
RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景
MQ使用场景
-
异步处理
不用MQ时可能的处理流程:
common使用MQ处理:
mq
-
流量削峰
decrease top
-
应用解耦
cross_system_mq
-
日志处理
log_mq
Install on Windows
-
安装 Erlang 环境
RabbitMQ 是 Erlang 语言写的,首先我们需要安装Erlang 环境
下载地址:
-
安装 RabbitMQ Server
下载地址:
-
启用Web管理插件
RabbitMQ 安装后会自动在安装并启动服务,RabbitMQ 自带一个Web管理界面,需要手动启用
打开 RabbitMQ 安装目录,在
sbin
目录下执行命令:-
cmd
rabbitmq-plugins.bat enable rabbitmq_management
-
powershell
.\rabbitmq-plugins.bat enable rabbitmq_management
在浏览器访问 http://localhost:15672 ,登录 Web 管理界面
默认用户名/密码:
guest/guest
-
Get Started
-
RabbitMQ 核心概念
- Publisher:生产者,消息的发送方。
- Connection:网络连接。
- Channel:信道,多路复用连接中的一条独立的双向数据流通道。
- Exchange:交换器(路由器),负责消息的路由到相应队列。
- Binding:队列与交换器间的关联绑定。消费者将关注的队列绑定到指定交换器上,以便Exchange能准确分发消息到指定队列。
- Queue:队列,消息的缓冲存储区。
- Virtual Host:虚拟主机,虚拟主机提供资源的逻辑分组和分离。包含连接,交换,队列,绑定,用户权限,策略等。
- Broker:消息队列的服务器实体。
- Consumer:消费者,消息的接收方。
-
RabbitMQ 消息模型
-
RabbitMQ 消息结构
RabbitMQ structure -
无Exchange单Consumer
RabbitMQ single consumer -
无Exchange多Consumer
RabbitMQ single consumer -
Exchange多Consumer
RabbitMQ single consumer -
公平分发
RabbitMQ avarage distribution -
RPC
RabbitMQ RPC
-
-
RabbitMQ 常用ExchangeType介绍
-
direct(明确的路由规则:消费端绑定的队列名称必须和消息发布时指定的路由名称一致)
direct exchangeType -
fanout(消息广播,将消息分发到exchange上绑定的所有队列上)
fanout的路由机制如下图,即发送到
fanout exchangeTypefanout
类型exchange
的消息都会分发到所有绑定该exchange
的队列上去。 -
topic(模式匹配的路由规则:支持通配符)
topic exchangeTypetopic
是direct
的升级版,是一种模式匹配的路由机制。它支持使用两种通配符来进行模式匹配:符号#
和符号*
。其中*
匹配一个单词,#
则表示匹配0个或多个单词,单词之间用.
分割。如下图所示。 -
x-delayed-message(需要插件支持,插件下载地址:rabbitmq_delayed_message_exchange)
支持
direct
和topic
模式,支持消息延迟发送
-
网友评论