0


Linux环境下,通过Docker搭建及配置RabbitMQ

😊 @ 作者: 一恍过去

💖 @ 主页: https://blog.csdn.net/zhuocailing3390

🎊 @ 社区: Java技术栈交流

🎉 @ 主题: Linux环境下,通过Docker搭建及配置RabbitMQ

⏱️ @ 创作时间: 2022年07月17日

在这里插入图片描述

目录

前言

RabbitMQ是一个开源的消息队列中间件,用于在应用程序之间进行可靠的消息传递。它实现了高级消息队列协议(AMQP),提供了可靠的消息传递、灵活的消息路由和高度可扩展性的特性。

RabbitMQ作为消息中间件提供了以下主要功能和概念:

  • 生产者:发送消息的应用程序。
  • 消费者:接收并处理消息的应用程序。
  • 消息队列:存储消息的缓冲区,使生产者和消费者之间的通信异步化。
  • 交换机:接收生产者发送的消息并将其路由到一个或多个消息队列。
  • 绑定:定义了交换机和消息队列之间的关联关系,决定消息如何被路由。
  • 路由键:生产者在将消息发送到交换机时指定的标识符,用于消息的路由选择。
  • 队列:存储消息的缓冲区,消费者从队列中接收消息。
  • ACK(确认机制):消费者在处理完消息后向RabbitMQ发送确认,确保消息已经被消费并可以从队列中删除。

1、Linux环境搭建

本次搭建操作目录:/opt/mq/rabbit

RabbitMQ依赖于Erlang,所有需要先安装Erlang环境

Erlang与RabbitMQ对应版本:https://www.rabbitmq.com/which-erlang.html

本次搭建使用版本:erlang-23.3.4.8-1.el7、rabbitmq-3.8.27-1-el7

注意:如果是CentOS 7.x,选择el7版本,如果是CentOS 8.x,则选择el8版本,通过

cat /proc/version

可以查看具体内核版本

1.1、Erlang安装

rpm-ivh erlang-23.3.4.8-1.el7.x86_64.rpm    

在这里插入图片描述

1.2、RabbitMQ安装

yum install socat -yrpm-ivh rabbitmq-3.8.27-1-el7.noarch.rpm

在这里插入图片描述

  • RabbitMQ启动:

添加开机启动:

chkconfig rabbitmq-server on 

启动服务:

/sbin/service rabbitmq-server start

停止服务:

/sbin/service rabbitmq-server stop

查看服务状态

/sbin/service rabbitmq-server status

在这里插入图片描述

1.3、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.4、卸载

卸载前先停止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 \-p15672:15672 -p5672:5672 \-v /root/docker/rabbitmq/data:/data/rabbitmq \-eRABBITMQ_DEFAULT_USER=admin \-eRABBITMQ_DEFAULT_PASS=admin \
rabbitmq:3.8.27-management

2.4、开启web页面管理

# 进入容器dockerexec-it rabbitmq /bin/bash
# 开启web页面插件
rabbitmq-plugins enable rabbitmq_management

登录web页面:
地址:http://ip:15672
用户密码及密码:admin/admin

2.5、创建用户

# 进入容器dockerexec-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 和应用程序,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。

消费者

消费与接收具有相似的含义。消费者大多时候是一个等待接收消息的程序,同一个应用程序既可以是生产者又是可以是消费者。

关系图:
在这里插入图片描述

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不同

在这里插入图片描述

标签: linux docker rabbitmq

本文转载自: https://blog.csdn.net/zhuocailing3390/article/details/131750207
版权归原作者 一恍过去 所有, 如有侵权,请联系我们删除。

“Linux环境下,通过Docker搭建及配置RabbitMQ”的评论:

还没有评论