1、Linux环境搭建
本次搭建操作目录:/opt/mq/rabbit
RabbitMQ依赖的是Erlang语言,所以要先安装Erlang的环境。Erlang在1991年由爱立信公司向用户推出了第一个版本,经过不断的改进完善和发展,在1996年爱立信又为所有的Erlang用户提供了一个非常实用且稳定的OTP软件库并在1998年发布了第一个开源版本。Erlang同时支持的操作系统有linux,windows,unix等,可以说适用于主流的操作系统上,尤其是它支持多核的特性非常适合多核CPU,而分布式特性也可以很好融合各种分布式集群。
Erlang与RabbitMQ对应版本:https://www.rabbitmq.com/which-erlang.html
本次搭建使用版本:erlang-23.3.4.8-1.el7、rabbitmq-3.8.27-1-el7
值得注意的是:如果是CentOS7.x版本,选择el7版本,如果是CentOS版本,选择el8版本,通过cat /proc/version可以查看具体内核
1.1、Erlang安装
- Erlang下载: 地址:Releases · rabbitmq/erlang-rpm · GitHub,选择
erlang-23.3.4.8-1.el7
版本
- Erlang安装:将下载好的
rpm
安装包,上传到服务器中,执行以下命令进行安装:rpm -ivh erlang-23.3.4.8-1.el7.x86_64.rpm
1.2、RabbitMQ安装
- RabbitMQ下载:地址:Releases · rabbitmq/rabbitmq-server · GitHub,选择
rabbitmq-3.8.27-1-el7
版本
- RabbitMQ安装:将下载好的
rpm
安装包,上传到服务器中,依次执行以下命令进行安装:
yum install socat -y
rpm -ivh rabbitmq-3.8.27-1-el7.noarch.rpm
1.3 、RabbitMQ相关命令
1.添加开启启动命令
chkconfig rabbitmq-server on
2.启动服务
/sbin/service rabbitmq-server start
3.停止服务
/sbin/service rabbitmq-server stop
4.查看服务状态
/sbin/service rabbitmq-server status
1.4、web管理插件
RabbitMQ的可视化管理界面需要进行插件的安装,安装过程如下:
rabbitmq-plugins enable rabbitmq_management
创建登录账号:
# 创建账号,add_user后面分别为:账户 密码
rabbitmqctl add_user admin admin
# 设置用户角色
rabbitmqctl set_user_tags admin administrator
# 设置用户权限
# rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
查看用户列表:
rabbitmqctl list_users
测试登录:
可视化界面的默认端口为
15672
,访问时:
ip:15672
即可;
1.5、卸载
卸载前先停止rabbitmq服务 :
/sbin/service rabbitmq-server stop
查看rabbitmq安装的相关列表:
yum list | grep rabbitmq
卸载rabbitmq:
yum -y remove rabbitmq-server.noarch
卸载erlang:
# 依次执行以下命令
yum -y remove erlang-*
yum remove erlang.x86_64
删除有关的所有文件 :
rm -rf /usr/lib64/erlang
rm -rf /var/lib/rabbitmq
rm -rf /usr/local/erlang
rm -rf /usr/local/rabbitmq
2、Docker环境搭建
docker搭建rabbitmq的版本为
3.8.27
2.1、拉取镜像
docker pull rabbitmq:3.8.27-management
2.2、创建挂载目录
mkdir -p /root/docker/rabbitmq
2.3、启动容器
# 启动容器并且指定web管理的账户密码
docker run -d --hostname rabbit01 --name rabbitmq \
-p 15672:15672 -p 5672:5672 \
-v /root/docker/rabbitmq/data:/data/rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
rabbitmq:3.8.27-management
2.4、开启web页面管理
# 进入容器
docker exec -it rabbitmq /bin/bash
# 开启web页面插件
rabbitmq-plugins enable rabbitmq_management
登录web页面:
地址:http://ip:15672
用户密码及密码:admin/admin
2.5、创建用户
# 进入容器
docker exec -it rabbitmq /bin/bash
# 创建账号,add_user后面分别为:账户 密码
rabbitmqctl add_user admin2 admin2
# 设置用户角色
rabbitmqctl set_user_tags admin2 administrator
# 设置用户权限
# rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
rabbitmqctl set_permissions -p "/" admin2 ".*" ".*" ".*"
# 查看用户列表
rabbitmqctl list_users
3、RabbitMQ核心概念
生产者
产生数据发送消息的程序是生产者
交换机
交换机是 RabbitMQ 非常重要的一个部件,一方面它接收来自生产者的消息,另一方面它将消息推送到队列中。交换机必须确切知道如何处理它接收到的消息,是将这些消息推送到特定队列还是推送到多个队列,亦或者是把消息丢弃,这个得有交换机类型决定
队列
队列是 RabbitMQ 内部使用的一种数据结构,尽管消息流经 RabbitMQ 和应用程序,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。
消费者
消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序,同一个应用程序既可以是生产者又是可以是消费者。
4、工作原理
Broker: 接收和分发消息的应用,就是RabbitMQ Server
Connection: publisher/consumer 和 broker 之间的 TCP 连接
Channel: Channel 是在 connection 内部建立的逻辑连接,每个线程创建单独的 channel 进行通讯,Channel 作为轻量级的 Connection 极大减少了操作系统建立 TCP connection 的开销
Exchange: message 到达 broker 的第一站,根据分发规则,匹配查询表中的 routing key,分发 消息到 queue 中去。常用的类型有:direct (point-to-point), topic (publish-subscribe) and fanout (multicast)
Queue: 消息最终被送到这里等待consumer 取走
Virtual Hosts: 一个Vhost就相当于一个 库,不同的Vhost之间的Exchange、Queue不同
版权归原作者 那年夏天丶 所有, 如有侵权,请联系我们删除。