RabbitMQ——初识RabbitMQ & 安装步骤

简介: RabbitMQ——初识RabbitMQ & 安装步骤

文章目录:


1.RabbitMQ概述

1.1 什么是消息队列?

1.2 为什么要使用消息队列?

1.3 RabbitMQ特点

2.RabbitMQ的安装

2.1 安装依赖包

2.2 安装Erlang

2.3 安装RabbitMQ

2.4 检查ErlangRabbitMQ是否安装成功

3.RabbitMQ常用命令

3.1 启动和关闭

3.2 添加插件

3.3 用户管理

3.4 权限管理

3.5 vhost管理

1.RabbitMQ概述


1.1 什么是消息队列

消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。


消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。


1.2 为什么要使用消息队列?


从上面的描述中可以看出消息队列是一种应用间的异步协作机制,那什么时候需要使用 MQ 呢?

以常见的订单系统为例,用户点击【下单】按钮之后的业务逻辑可能包括:扣减库存、生成相应单据、发红包、发短信通知。在业务发展初期这些逻辑可能放在一起同步执行,随着业务的发展订单量增长,需要提升系统服务的性能,这时可以将一些不需要立即生效的操作拆分出来异步执行,比如发放红包、发短信通知等。这种场景下就可以用 MQ ,在下单的主流程(比如扣减库存、生成相应单据)完成之后发送一条消息到 MQ 让主流程快速完结,而由另外的单独线程拉取MQ的消息(或者由 MQ 推送消息),当发现 MQ 中有发红包或发短信之类的消息时,执行相应的业务逻辑。

以上是用于业务解耦的情况,其它常见场景包括最终一致性、广播、错峰流控等等。


1.3 RabbitMQ特点

RabbitMQ 是一个由Erlang语言开发的 AMQP 的开源实现。

AMQP Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。

RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。具体特点包括:


  • 可靠性(Reliability):RabbitMQ      使用一些机制来保证可靠性,如持久化、传输确认、发布确认。
  • 灵活的路由(Flexible Routing):在消息进入队列之前,通过     Exchange 来路由消息的。对于典型的路由功能,RabbitMQ 已经提供了一些内置的     Exchange 来实现。针对更复杂的路由功能,可以将多个 Exchange 绑定在一起,也通过插件机制实现自己的     Exchange
  • 消息集群(Clustering):多个RabbitMQ服务器可以组成一个集群,形成一个逻辑     Broker
  • 高可用(Highly Available Queues):队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。
  • 多种协议(Multi-protocol):RabbitMQ      支持多种消息队列协议,比如 STOMPMQTT      等等。
  • 多语言客户端(Many Clients):RabbitMQ      几乎支持所有常用语言,比如 Java.NETRuby      等等。
  • 管理界面(Management UI):RabbitMQ      提供了一个易用的用户界面,使得用户可以监控和管理消息 Broker 的许多方面。
  • 跟踪机制(Tracing):如果消息异常,RabbitMQ      提供了消息跟踪机制,使用者可以找出发生了什么。

2.RabbitMQ的安装


一般来说安装 RabbitMQ 之前要安装 Erlang ,可以去Erlang官网下载。接着去RabbitMQ官网下载安装包,之后解压缩即可。

Erlang官方下载地址:https://www.erlang.org/downloads

RabbitMQ官方下载地址:https://www.rabbitmq.com/download.html


按照上图中的点击下载就可以了,因为我之前就已经下载了其他版本,所以这里只是给大家提供一个进入官网找到下载的一个方法路径(毕竟是全英的网站,看着多少有点不舒服)。

下载完之后,会有两个压缩包,我们在Linux中使用 rz -y 命令将其上传到Linux中,当然你也可以使用Xftp文件进行文件互传。


2.1 安装依赖包

安装RabbitMQ之前必须要先安装所需要的依赖包可以使用下面的一次性安装命令

yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto -y

2.2 安装Erlang

·       使用 tar -zxvf otp_src_19.3.tar.gz 命令解压我们上面步骤中下载好的Erlang压缩包。

·       手动创建erlang 的安装目录:mkdir /usr/local/erlang

·       进入erlang的解压目录:cd otp_src_19.3

·       配置erlang的安装信息: ./configure --prefix=/usr/local/erlang --without-javac

·       编译并安装:make && make install

·       配置环境变量:vim /etc/profile

·       将这些配置填写到profile文件的最后   ERL_HOME=/usr/local/erlang

                                                                  PATH=$ERL_HOME/bin:$PATH

                                                                  export ERL_HOME PATH

  • 启动环境变量配置文件:source      /etc/profile


2.3 安装RabbitMQ

安装RabbitMQrpm -ivh --nodeps rabbitmq-server-3.7.2-1.el7.noarch.rpm


2.4 检查Erlang、RabbitMQ是否安装成功

3.RabbitMQ常用命令


3.1 启动和关闭

1、启动RabbitMQ

rabbitmq-server start &

注意:这里可能会出现错误,错误原因是/var/lib/rabbitmq/.erlang.cookie文件权限不够。

解决方案对这个文件授权

 chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

 chmod 400 /var/lib/rabbitmq/.erlang.cookie

2、停止服务

rabbitmqctl stop


3.2 添加插件

1、添加插件

        rabbitmq-plugins enable {插件名}

2、删除插件

        rabbitmq-plugins disable {插件名}

       注意:RabbitMQ启动以后,可以使用浏览器进入管控台,但是默认情况RabbitMQ不允许直接使用浏览器浏览器进行访问,因此必须执行如下命令添加插件:

   rabbitmq-plugins enable rabbitmq_management

3、使用浏览器访问管控台:http://RabbitMQ服务器IP:15672

3.3 用户管理

RabbitMQ安装成功后使用默认用户名guest登录

账号:guest

密码:guest

注意:这里guest只允许本机登录访问需要创建用户并授权远程访问命令如下

添加用户:rabbitmqctl add_user {username} {password}

                 rabbitmqctl add_user root root

删除用户:rabbitmqctl delete_user {username}

修改密码:rabbitmqctl change_password {username} {newpassword}

                 rabbitmqctl change_password root 123456

设置用户角色:rabbitmqctl set_user_tags {username} {tag}

                        rabbitmqctl set_user_tags root administrator

tag参数表示用户角色取值为:management monitoring policymaker  administrator

                各角色详解:

management

用户可以通过AMQP做的任何事外加:

列出自己可以通过AMQP登入的virtual hosts

查看自己的virtual hosts中的queues, exchanges bindings

查看和关闭自己的channels connections

查看有关自己的virtual hosts全局的统计信息,包含其他用户在这些virtual hosts中的活动。

policymaker

management可以做的任何事外加:

查看、创建和删除自己的virtual hosts所属的policiesparameters

monitoring

management可以做的任何事外加:

列出所有virtual hosts,包括他们不能登录的virtual hosts

查看其他用户的connectionschannels

查看节点级别的数据如clusteringmemory使用情况

查看真正的关于所有virtual hosts的全局的统计信息

administrator  

policymakermonitoring可以做的任何事外加:

创建和删除virtual hosts

查看、创建和删除users

查看创建和删除permissions

关闭其他用户的connections


3.4 权限管理


授权命令:rabbitmqctl set_permissions [-p vhostpath] {user} {conf} {write} {read}

                -p vhostpath :用于指定一个资源的命名空间,例如 –p / 表示根路径命名空间

                 user:用于指定要为哪个用户授权填写用户名

                 conf:一个正则表达式match哪些配置资源能够被该用户配置。
                 write:
一个正则表达式match哪些配置资源能够被该用户读。
                 read:
一个正则表达式match哪些配置资源能够被该用户访问。

                例如:rabbitmqctl set_permissions -p / root '.*' '.*' '.*'

                           用于设置root用户拥有对所有资源的读写配置权限

查看用户权限rabbitmqctl  list_permissions [vhostpath]

例如

 查看根径经下的所有用户权限

 rabbitmqctl  list_permissions

 查看指定命名空间下的所有用户权限

 rabbitmqctl  list_permissions /abc

查看指定用户下的权限rabbitmqctl  list_user_permissions {username}

例如:查看root用户下的权限

rabbitmqctl  list_user_permissions root

清除用户权限rabbitmqctl  clear_permissions {username}

例如:清除root用户的权限

rabbitmqctl  clear_permissions root


3.5 vhost管理


vhostRabbitMQ中的一个命名空间,可以限制消息的存放位置利用这个命名空间可以进行权限的控制有点类似Windows中的文件夹一样,在不同的文件夹中存放不同的文件。

1、添加vhost: rabbitmqctl add vhost {name}

例如:rabbitmqctl add vhost bjpowernode

2、删除vhostrabbitmqctl delete vhost {name}

例如:rabbitmqctl delete vhost bjpowernode

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
安全
选择最佳供应商:ERP系统的供应商选择与评估方法论
选择最佳供应商:ERP系统的供应商选择与评估方法论
1603 0
|
监控 负载均衡 安全
服务治理:构建健壮的微服务生态系统的关键
在微服务架构中,服务治理是确保服务可靠性、可伸缩性和高可用性的关键组成部分。本博客将深入探讨服务治理的概念、重要性以及如何有效地在微服务生态系统中实施它。
|
物联网 开发者
NB-IoT 中 TAU 和 PSM 定时器配置 | 学习笔记
快速学习 NB-IoT 中 TAU 和 PSM 定时器配置
NB-IoT 中 TAU 和 PSM 定时器配置 | 学习笔记
|
Kubernetes Docker 容器
【Docker】'TLS handshake timeout' 问题修复记录
'TLS handshake timeout' 问题修复记录
2048 0
【Docker】'TLS handshake timeout' 问题修复记录
|
消息中间件 存储 Java
最经典的消息中间件:RabbitMQ
最经典的消息中间件:RabbitMQ
1157 1
|
9月前
|
Java 数据库 开发者
详细介绍SpringBoot启动流程及配置类解析原理
通过对 Spring Boot 启动流程及配置类解析原理的深入分析,我们可以看到 Spring Boot 在启动时的灵活性和可扩展性。理解这些机制不仅有助于开发者更好地使用 Spring Boot 进行应用开发,还能够在面对问题时,迅速定位和解决问题。希望本文能为您在 Spring Boot 开发过程中提供有效的指导和帮助。
1158 12
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
消息中间件 Ubuntu 安全
如何安装和管理RabbitMQ
如何安装和管理RabbitMQ
192 0
|
存储 Serverless API
阿里云百炼应用实践系列-10分钟构建能主动提问的智能导购
通过使用阿里云百炼平台,您可以快速构建一个多代理(Multi-Agent)架构的智能导购助手。该助手能够通过多轮互动了解顾客的具体需求,收集详细信息后,利用阿里云百炼的知识检索增强功能或已有的商品数据库进行商品搜索,为顾客推荐最合适的产品。
1523 8
|
Java 开发者 Spring
深入理解Spring Boot中的自动配置原理
深入理解Spring Boot中的自动配置原理
1711 1