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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
6月前
|
消息中间件 数据可视化 大数据
【如何安装和配置RabbitMQ(转载)】
【如何安装和配置RabbitMQ(转载)】
72 2
|
消息中间件 JSON 数据格式
RabbitMQ安装
RabbitMQ安装
71 0
|
消息中间件 监控 关系型数据库
RabbitMQ安装说明
RabbitMQ安装说明
116 0
|
消息中间件 存储 网络协议
Rabbitmq的安装与使用
Rabbitmq的安装与使用
259 0
|
消息中间件 网络安全 数据安全/隐私保护
【安装配置RabbitMQ】
【安装配置RabbitMQ】
116 0
【安装配置RabbitMQ】
|
消息中间件 开发工具 C语言
RabbitMQ系列(一)--------安装配置
安装RabbitMQ 前提先要配置好环境 需要先安装Erlang
99 0
RabbitMQ系列(一)--------安装配置
|
消息中间件
RabbitMQ安装及配置(下)
RabbitMQ安装及配置(下)
135 0
RabbitMQ安装及配置(下)
|
消息中间件 Linux
RabbitMQ安装及配置(上)
RabbitMQ安装及配置(上)
215 0
RabbitMQ安装及配置(上)
|
消息中间件 数据安全/隐私保护
RabbitMq(一)安装使用
RabbitMq(一)安装使用
133 0
|
消息中间件 存储 Linux
RabbitMQ学习笔记 01、RabbitMQ基本认识与环境搭建(二)
RabbitMQ学习笔记 01、RabbitMQ基本认识与环境搭建(二)
RabbitMQ学习笔记 01、RabbitMQ基本认识与环境搭建(二)