什么是RabbitMQ
在主流的MQ消息队列中,主要具体是Kafka和RabbitMQ,RabbitMQ消息队列是基于AMQP的协议来实现,AMQP的协议主要是面向消息,队列,路由以及发布/订阅的模式,同时AMQP在可靠性和安全性方面是非常具备优势的。AMQP的协议主要应用于企业级的领域,对数据一致性,稳定性,可靠性要求很高的场景,这也是侧面说明了RabbitMQ消息队列中间件也是具备这方面的特性,不过比起Kafka消息的高性能,和高吞吐量而言是比较逊色的。RabbitMQ具体就是开源的消息队列服务器,主要是基于AMQP的协议来实现,使用Erlang语言编写(该语言主要应用于路由器开发编程领域)。
Erlang安装
https://github.com/erlang/otp/releases/download/OTP-23.3.4.10/otp_src_23.3.4.10.tar.gz的地址下载安装包,下载成功后进行解压,具体操作如下:
代码语言:javascript复制tar zxvf otp_src_23.0.tar.gz -C /usr/local/src/
#解压后,显示如下
[root@centos-master ~]# cd /usr/local/src/
[root@centos-master src]# ls
otp_src_23.0
解压成功后,下来进行编译以及具体的安装,安装使用到的命令是make & make install,具体如下:
代码语言:javascript复制#编译前需要安装第三方的库
yum -y install ncurses-devel
#进入到otp_src_23.0的目录下,下来开始编译安装,具体如下
./configure --prefix=/usr/local/erlang
make && make install
#配置erlang环境
export ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:$ERLANG_HOME/bin:
#验证erl的环境
[root@centos-master ~]# erl
Erlang/OTP 23 [erts-11.0] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1]
Eshell V11.0 (abort with ^G)
1> io:format("Hello World")
备注:如上主要显示了Erlang环境的安装过程以及验证该环境是否已搭建好。
安装RabbitMQ
下载安装包后,下来就是解压以及启动具体的服务,这里需要特别的说明,RabbitMQ使用的端口是5672,控制台服务使用的端口是15672,所以这两个端口是不能被占用的。
代码语言:javascript复制[root@centos-master mq]# xz -d rabbitmq-server-generic-unix-3.8.6.tar.xz
[root@centos-master mq]# ls
otp_src_23.0.tar.gz rabbitmq-server-generic-unix-3.8.6.tar
[root@centos-master mq] tar xvf rabbitmq-server-generic-unix-3.8.6.tar -C /usr/local/
#修改名称
mv rabbitmq_server-3.8.6/ rabbitmq
下来演示服务启动的服务以及验证服务是否启动,具体如下:
代码语言:javascript复制[root@centos-master sbin]# ./rabbitmq-server start
Configuring logger redirection
## ## RabbitMQ 3.8.6
## ##
########## Copyright (c) 2007-2020 VMware, Inc. or its affiliates.
###### ##
########## Licensed under the MPL 2.0. Website: https://rabbitmq.com
Doc guides: https://rabbitmq.com/documentation.html
Support: https://rabbitmq.com/contact.html
Tutorials: https://rabbitmq.com/getstarted.html
Monitoring: https://rabbitmq.com/monitoring.html
Logs: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@centos-master.log
/usr/local/rabbitmq/var/log/rabbitmq/rabbit@centos-master_upgrade.log
Config file(s): (none)
Starting broker... completed with 0 plugins.
#后台启动方式
sbin/rabbitmq-server start -detached
#查看监听的端口信息
[root@centos-master ~]# lsof -i:5672
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 11970 root 96u IPv6 66897 0t0 TCP *:amqp (LISTEN)
备注:如上可以看到我们的服务已经被启动成功。
创建账户
首先RabbitMQ它有默认的用户,默认的用户是guest/guest,下来创建新的控制台的账户,但是创建的用户也得具备管理员的账户,具体操作如下:
代码语言:javascript复制[root@centos-master sbin]# rabbitmqctl add_user wuya java
Adding user "wuya" ...
[root@centos-master sbin]# rabbitmqctl set_user_tags wuya administrator
Setting tags for user "wuya" to [administrator] ...
#创建用户成功后,需要给具体的操作权限
[root@centos-master sbin]# rabbitmqctl set_permissions -p / wuya ".*" ".*" ".*"
Setting permissions for user "wuya" in vhost "/" ...
启用WEB控制台
下来我们启用RabbitMQ的WEB控制台,一般我们都是使用的是控制台来进行运维管理维护,以及消息的查看,启动WEB控制台具体操作如下:
代码语言:javascript复制[root@centos-master sbin]# rabbitmq-plugins enable rabbitmq_management
Enabling plugins on node rabbit@centos-master:
rabbitmq_management
The following plugins have been configured:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
Applying plugin configuration to rabbit@centos-master...
The following plugins have been enabled:
rabbitmq_management
rabbitmq_management_agent
rabbitmq_web_dispatch
started 3 plugins.
下来访问http://101.**.***84:15672/ 访问WEB控制台,显示如下:
下来使用刚才创建的用户登录进去,登录进去后,显示主界面具体如下:
如上所示,我们的RabbitMQ消息队列服务器的环境已搭建好。