RabbitMQ安装配置 以及5种核心消息模式

什么是消息队列

MQ全称为Message Queue,即消息队列。“消息队列”是在消息的传输过程中保存消息的容器。它是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。

RabbitMQ简介

rabbitmq是一个开源的AMQP实现,服务器端用erlang语言编写,支持多种客户端。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

常用端口

  • 4369:是erlang端口/节点名称映射程序,用来跟踪节点名称监听地址,在集群中起到一个类似DNS的作用。

  • 5672/5671:AMQP 0-9-1和1.0客户端端口,没有使用SSL和使用SSL的端口。

  • 25672:用于rabbitMQ节点间和CLI工具通信,配合4369使用。

  • 15672:HTTP_API端口,管理员用户才能访问,用于管理rabbitmq,需要启用management插件。

  • 61613/61614:当STOMP插件启用的时候打开,作为STOMP客户端端口(根据是否使用TLS选择)

  • 1883/8883:当MQTT插件启用的时候打开,作为MQTT看客户端端口(根据是否使用TLS选择)

  • 15674:基于websocket的STOMP客户端端口(当插件web STOMP启用的时候打开)

  • 15674:基于websocket的MQTT客户端端口(当插件web MQTT启用的时候打开)

  • RabbitMQ绑定端口安装完之后,如果访问不了有可能是防火墙的问题。

相关概念

RabbitMQ的工作原理

下图是RabbitMQ的基本结构:

image

组成部分说明:

  • Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue
  • Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过虑。
  • Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的
  • Producer:消息生产者,即生产方客户端,生产方客户端将消息发送
  • Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。

生产者发送消息流程:

1、生产者和Broker建立TCP连接。

2、生产者和Broker建立通道。

3、生产者通过通道消息发送给Broker,由Exchange将消息进行转发。

4、Exchange将消息转发到指定的Queue(队列)

消费者接收消息流程:

1、消费者和Broker建立TCP连接

2、消费者和Broker建立通道

3、消费者监听指定的Queue(队列)

4、当有消息到达Queue时Broker默认将消息推送给消费者。

5、消费者接收到消息。

6、ack回复

以5种消息模式中的路由模式为例

image

标志 中文名 英文名 描述
P 生产者 Producer 消息的发送者,可以将消息发送到交换机
C 消费者 Consumer 消息的接收者,从队列中获取消息并进行消费
X 交换机 Exchange 接收生产者发送的消息,并根据路由键发送给指定队列
Q 队列 Queue 存储从交换机发来的消息
type 交换机类型 type 不同类型的交换机转发消息方式不同
fanout 发布/订阅模式 fanout 广播消息给所有绑定交换机的队列
direct 路由模式 direct 根据路由键发送消息
topic 通配符模式 topic 根据路由键的匹配规则发送消息

安装及配置

win下安装

rabbitmq-plugins enable rabbitmq_management

Docker下安装

  • 下载镜像
docker pull rabbitmq
  • 启动服务
docker run -p 5672:5672 -p 15672:15672 --name rabbitmq \
-d rabbitmq
  • 开启管理功能
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
  • 开启防火墙便于外网访问
firewall-cmd --zone=public --add-port=15672/tcp --permanent
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload

配置

  • 访问RabbitMQ管理页面地址,查看是否安装成功(Linux下使用服务器IP访问即可) http://localhost:15672/
  • 输入账号密码并登录,这里使用默认账号密码登录:guest guest
  • 创建帐号并设置其角色为管理员
    image
  • 创建虚拟Host
    image
  • 给host设置用户权限
    image
posted @ 2021-07-14 17:11  无小空空  阅读(279)  评论(0编辑  收藏  举报