RabbitMQ的基础架构,安装,web插件安装,路由策略和六种工作模式(一)

发布于 2021-10-08  3.56k 次阅读


一,RabbitMQ的核心概念和基础架构

一,RabbitMQ四大核心组件

RabbitMQ消息中间件主要由四大核心部分组成:

  • 生产者
  • 交换机
  • 队列
  • 消费者

1,生产者

产生数据并发送给消费者

2,交换机

交换机是RabbitMQ的一个非常主要的组成,一方面它接收来自生产者的消息,另一方面它将消息推送给队列,交换机必须确定知道如何处理它接收的消息,是将这些消息推送到特定队列还是推送给多个队列,这个由交换机的类型决定

3,队列

队列是RabbitMQ内部使用的一种数据结构,主要用于存放消息,然后再推送到应用程序消费者,队列的容量仅受内存和磁盘限制的约束,本质上是一个大的消息缓冲区,生产者可以将消息发送给队列,消费者尝试从队列接收数据

4,消费者

消费与接收具有数据

注:生产者和消费者开发并不在同一个服务端上,但一个服务端既可以是生产者也可以是消费者

二,RabbitMQ基础架构

RabbitMQ由七大部分组成:

  1. Broker(RabbitMQ Server):接收和分发消息的应用,它内部封装了多个Virtual Host(虚拟主机)
  2. Virtual Host:出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的NameSpace的概念,当多个不同的用户使用同一个RabbitMQ提供服务时,可以使用Virtual进行服务划分,每一个Virtual封装了多个交换机(Exchange)/队列(Queue)
  3. Connection:负责生产者(producer)/消费者(Consumer)和Broker之间的TCP连接
  4. Channel:如果每一次访问RabbitMQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销是巨大的,效率也低,采用Channel是在Connection建立逻辑连接,每一个Thread创建单独的Channel进行通讯,将极大的减少系统的开销
  5. Exchange:message到达brock,根据分发规则将消息分发到具体的queue中,常见的Exchange类型有:direct,topic,fanout
  6. Queue:缓冲消息并推送给Consumer
  7. Binding:exchange和queue之间的虚拟连接,binding中包含routing key,binding消息被保存在exchange的查询表中,用于message的分发依据

二,RabbitMQ的安装配置

安装RabbitMQ需要先安装Erlang语言环境,还有一个Socat依赖包(这个依赖包通过yum安装)

1,下载Erlang和RabbitMQ的RPM包(CentOS)

Erlang RPM包下载地址:https://packagecloud.io/rabbitmq/erlang

Erlang源码包下载地址:http://erlang.org/download/?N=D

RabbitMQ下载地址:https://www.rabbitmq.com/install-rpm.html#downloads

注:Erlang和RabbitMQ是有版本兼容问题的,在https://www.rabbitmq.com/which-erlang.html可看对应版本关系

2,我下载的是RabbitMQ3.9.7和Erlang23.3.4.7的RPM格式(tar.gz需要手动安装)

3,安装命令(注意先后顺序)

#安装erlang
rpm -ivh erlang-23.3.4.7-1.el7.x86_64.rpm
#安装socat依赖
yum install -y socat
#安装rabbitmq
rpm -ivh rabbitmq-server-3.9.7-1.el8.noarch.rpm

注:rpm安装默认安装在/usr/sbin目录中,centos中通过Systemctl命令可以直接启动,关闭,查看状态

4,启动RabbitMQ并查看状态

启动:systemctl start rabbitmq-server

RabbitMQ默认端口5672

查看状态:systemctl status rabbitmq-server

三,RabbitMQ Web可视化插件的安装

一,安装web插件

安装命令:rabbitmq-plugins enable rabbitmq_management
 
注:安装RabbitMQ web界面插件需要先关闭rabbitmq:systemctl stop rabbitmq-server
 
访问:IP:15672

二,添加用户并设置权限

1,创建一个web账号

命令:rabbitmqctl add_user 用户名 密码

#创建一个用户名为admin,密码为123的账号
rabbitmqctl add_user admin 123

2,设置用户角色

命令:rabbitmqctl set_user_tags 用户名 角色

角色有两种:

                    1,普通用户(默认创建时就是)

                    2,管理员(administrator)

#设置admin用户权限为管理员
rabbitmqctl set_user_tags admin administator

3,设置用户权限

命令:rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>

  • conf:配置权限
  • write:写权限
  • read:读权限
  • *代表有设置该权限

注:管理员不需要设置,它的权限是拉满的

#设置普通用户wql的权限
rabbitmqctl set_permissions -p "/" wql "*" "*" "*"

4,查看用户列表

命令:rabbitmqctl list_users

5,进入web界面