返回 导航

其他

hangge.com

消息中间件 RabbitMQ 介绍与安装教程(使用CentOS环境)

作者:hangge | 2020-02-02 08:10

一、基本概念介绍

1,什么是消息队列?

  • 消息队列(Message Queue)是一种进程间或者线程间的异步通信方式。
  • 使用消息队列,消息生产者在产生消息后,会将消息保存在消息队列中,直到消息消费者来取走它,即消息的发送者和接收者不需要同时与消息队列交互。
  • 使用消息队列可以有效实现服务的解耦,并提高系统的可靠性以及可扩展性。
  • 目前,开源的消息队列服务非常多,如 Apache ActiveMQRabbitMQ 等,这些产品也就是常说的消息中间件。

2,什么是 AMQP?

  • AMQPAdvanced Message Queuing Protocol,高级消息队列协议)是一个线路层的协议规范,而不是 APl 规范(例如 JMS)。
  • 由于 AMQP 是一个线路层协议规范,因此它天然就是跨平台的,就像 SMTPHTTP 等协议一样,只要开发者按照规范的格式发送数据,任何平台都可以通过 AMQP 进行消息交互。
  • 像目前流行的 StormMQRabbitMQ 等都实现了 AMQP

3,什么是 RabbitMQ?

  • RabbitMQ 是一个实现了 AMQP 的开源消息中间件,使用高性能的 Erlang 编写。
  • RabbitMQ 具有可靠性、支持多种协议、高可用、支持消息集群以及多语言客户端等特点,在分布式系统中存储转发消息,具有不错的性能表现。

二、安装 RabbitMQ

1,安装 Erlang 环境

(1)由于 RabbitMQ 使用 Erlang 编写,因此需要先安装 Erlang 环境,首先执行如下命令下载安装包:
wget http://erlang.org/download/otp_src_21.0.tar.gz

(2)接着执行如下命令解压并进入解压后的文件夹:
tar -zxvf otp_src_21.0.tar.gz
cd otp_src_21.0

(3)然后依次执行如下命令进行编译安装:
注意:如果执行第一步出现“./otp_build:行319: autoconf: 未找到命令”错误,需要先执行如下命令安装 autoconf
  • yum install -y autoconf
./otp_build autoconf
./configure
make
make install

(4)安装后执行 erl 命令进行检查,如果出现如下信息则说明安装成功。

2,安装 RabbitMQ

(1)由于 yum 仓库中默认的 Erlang 版本较低,因此首先需要将最新的 Erlang 包添加到 yum 源中,执行如下命令开始编辑:
vi /etc/yum.repos.d/rabbitmq-erlang.repo

(2)在文件里添加如下内容,然后保存退出:
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/21/el/7
gpgcheck=1
gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1

(3)添加成功后,执行如下命令清除原有缓存并创建新缓存:
yum clean all
yum makecache
yum update

(4)执行 yum list | grep erlang 命令查看下 erlang 的安装包。可以看到里面有一个 erlang.x86_64,版本为:21.xxxxxx,而且所属于 rabbitmq-erlang,这样就可以了。

(5)准备工作完成后就可以开始安装 RabbitMQ 了,首先执行如下命令下载文件:
wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.7/rabbitmq-server-3.7.7-1.el7.noarch.rpm

(6)下载后执行如下命令开始安装:
yum install rabbitmq-server-3.7.7-1.el7.noarch.rpm

(7)安装过程中,若提示缺少 socat 依赖,则执行如下命令安装 socat 依赖即可:
yum install socat

(8)安装完毕后,我们可以依次执行如下命令启动 RabbitMQ 服务、开启 web 插件、再重启服务:
service rabbitmq-server start
rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart

(9)执行如下命令可以查看状态,其中红框标注的是 log 文件的位置,如启动不成功可以查看日志定位问题:
service rabbitmq-server status

3,添加用户

(1)接下来我们添加一个用户名为 hangge,密码为 123 的用户:
    RabbitMQ 启动成功后,默认有一个 guest 用户,但是该用户只能在本地登录,无法远程登录。因此我通常需要添加一个新用户,同时其拥有管理员身份,而且能远程登录。
rabbitmqctl add_user hangge 123

(2)然后将这个用户设置为管理员角色,并且远程登录:
rabbitmqctl set_user_tags hangge administrator
rabbitmqctl set_permissions -p / hangge ".*" ".*" ".*"

4,开放防火墙端口

如果需要远程访问,我们还需执行如下命令开放 156725672 这两个端口。
不知为何,我直接关闭防火墙反而无法远程访问 Web 管理页面,必须开启防火墙并开放端口才行。
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --reload

5,访问测试

(1)使用浏览器访问 http://IP:15672,如果看到如下页面则说明 RabbitMQ 已经启动成功。

(2)使用我们前面创建的 hangge 用户登录,登录后的界面如下:
评论

全部评论(0)

回到顶部