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

news2024/12/28 8:09:08
😊 @ 作者: 一恍过去
💖 @ 主页: https://blog.csdn.net/zhuocailing3390
🎊 @ 社区: Java技术栈交流
🎉 @ 主题: Linux环境下,通过Docker搭建及配置RabbitMQ
⏱️ @ 创作时间: 2022年07月17日

在这里插入图片描述

目录

  • 前言
  • 1、Linux环境搭建
    • 1.1、Erlang安装
    • 1.2、RabbitMQ安装
    • 1.3、web管理插件
    • 1.4、卸载
  • 2、Docker环境搭建
    • 2.1、拉取镜像
    • 2.2、创建挂载目录
    • 2.3、启动容器
    • 2.4、开启web页面管理
    • 2.5、创建用户
  • 3、核心概念
  • 4、工作原理

前言

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安装

  • Erlang下载:
    ​ 地址:https://github.com/rabbitmq/erlang-rpm/releases,选择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下载:
    地址:https://github.com/rabbitmq/rabbitmq-server/releases,选择rabbitmq-3.8.27-1-el7版本
    在这里插入图片描述
  • RabbitMQ安装:
    将下载好的rpm安装包,上传到服务器中,依次执行以下命令进行安装:
yum install socat -y
rpm -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 \
-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 和应用程序,但它们只能存储在队列中。队列仅受主机的内存和磁盘限制的约束,本质上是一个大的消息缓冲区。许多生产者可以将消息发送到一个队列,许多消费者可以尝试从一个队列接收数据。

消费者

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

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

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/760999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot--整合FreeMarker--使用/实例

原文网址&#xff1a;SpringBoot--整合FreeMarker--使用/实例_IT利刃出鞘的博客-CSDN博客 简介 本文介绍SpringBoot如何使用FreeMarker。 配置文件 application.yml spring:#模板引擎 freemarkerfreemarker:# 模板后缀suffix: .ftl# 是否启用模板缓存cache: false# 模板编…

二、MySQL启动和客户端连接

一、启动 方法一&#xff1a; 1、winR&#xff0c;输入services.msc&#xff0c;按回车 2、找到MySQL&#xff0c;右键-启动/停止 MySQL安装后&#xff0c;默认已启动。 方法二、 1、winR&#xff0c;输入cmd&#xff0c;打开命令行 2、输入启动与停止命令 二、客户端连接 …

如何使用ArcGIS Pro进行洪水淹没分析

伴随Esri将重心越来越多的放在ArcGIS Pro上,以后ArcGIS的使用场景可能会越来越少,所以我们可以提前接触并使用ArcGIS Pro,做好相关准备。这里为大家介绍一下在ArcGIS中常见的操作——洪水淹没分析在ArcGIS Pro中如何实现。 01 加载数据 在菜单栏上点击插入,点击新建地图,…

UEC++:HUD

绘制文字&#xff1a; Canvas&#xff1a;必须需要字体 Canvas的颜色设置&#xff1a; 不失真放大字体&#xff1a; 绘制图片&#xff1a; 复杂方式绘制图片&#xff1a; 绘制材质球&#xff1a; 绘制线条&#xff1a;起始位置&#xff0c;终点位置&#xff0c;颜色&#xff0c…

MySQL入门教程(1)

文章目录 一. 数据库简介1.1 什么是数据库1.2 数据库的分类 二. MySQL2.1 MySQL简介2.2 MySQL的客户端2.3 MySQL的服务器2.4 总结 一. 数据库简介 1.1 什么是数据库 数据库是一类软件, 帮助我们管理数据. 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保…

latex 好看的文本框框

嘿嘿&#xff0c;完全符合我的审美&#xff0c;我真是小机灵鬼~ 分享给大家 \begin{tcolorbox}[colbackgray!20, colframegray!100, sharp corners, leftrule{3pt}, rightrule{0pt}, toprule{0pt}, bottomrule{0pt}, left{2pt}, right{2pt}, top{3pt}, bottom{3pt}]blablabla …

React(3)

1.案例选项卡 import React, { Component } from reactexport default class App extends Component {state{tabList:[{id:1,text:"电影"},{id:2,text:"影院"},{id:3,text:"我的"}]}render() {return (<div><ul>{this.state.tabList…

verilog实现pwm呼吸灯

文章目录 verilog实现pwm呼吸灯一、简介二、代码设计三、仿真代码编写四、仿真结果五、总结 verilog实现pwm呼吸灯 一、简介 呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化&#xff0c;感觉好像是人在呼吸。其广泛应用于手机之上&#xff0c;并成为各大品牌新款手…

杰理-AC695-页面之间跳转、页面内布局切换

杰理-AC695-页面之间跳转、页面内布局切换 //布局切换 ui_show(BT_MENU_LAYOUT); //页面切换 ui_hide_main(ID_WINDOW_BT); ui_show_main(ID_WINDOW_SYS);

3、java入门教程【数据类型】

一、概述 java中数据类型分为两大类&#xff1a;【基本数据类型】和【引用数据类型】 二、基础数据类型 数据类型含义默认值取值范围存储大小&#xff08;字节&#xff09;整型byte字节型0-128 到 1271整型short短整型0-2^15 到 2^15-12整型int【默认】整形0-2^31 到 2^31-14…

TMS Scripter v7.28 for Delphi

TMS Scripter v7.28 for Delphi 使用本地Pascal或Basic脚本以及带有可视化表单设计器、对象检查器等的完整IDE(集成开发环境)&#xff0c;为您的应用程序添加终极灵活性和强大功能。通过在您的应用程序中构建脚本支持&#xff0c;您可以在应用程序中提供高度的可配置性、灵活性…

fiddler抓取,Android真机测试

1.配置Fiddler抓取并解密HTTPS包 Fiddler默认是不抓取HTTPS包的&#xff0c;需要进行相应的配置。 打开Fiddler&#xff0c;选择“Tools->Fiddler Options...” 2.在弹出的对话框中选择“HTTPS”选项卡&#xff1a; 3.勾选“Capture HTTPS CONNECTs”&#xff0c;接着勾选…

Elisp之获取绝对路径和相对路径(二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Javascript 如何实现继承?

简单来说 js 实现继承的方式有很多种&#xff0c;比如 原型链继承、借用构造函数继承、组合继承、寄生继承、寄生组合继承、ES6 新增的 extends 继承一般我开发中用的比较多的就是 原型链继承 还有 class 类函数继承。 其他的基本用得少&#xff0c;主要是平时看一些技术博客类…

MySql 知识大汇总

目录 一、常用的数据类型 二、数据库索引 什么是数据库索引 索引的作用 索引是否越多越好 索引的分类 三、sql语句 插入 更新 删除 查询 普通查询 子查询 连表查询 四、常用的一些函数 group by 分组 order by 排序 HAVING 子句 根据条件…

5、传输层UDP28

传输层&#xff1a;负责俩端之间的数据传输&#xff08;TCP&UDP&#xff09; UDP协议&#xff1a;协议格式&#xff08;协议实现&#xff09;、协议特性、编程影响 一、协议格式&#xff08;协议实现&#xff09; 面试&#xff1a;传输层的数据结构是什么&#xff1f; 就是…

1.计算机系统概述

1.1 计算机发展历程 1.1.1计算机硬件的发展 1.逻辑元件的四代变化&#xff1a; 电子管->晶体管->中小规模集成电路->超大规模集成电路 第四代计算机时代产生了微处理器&#xff0c;是微型计算机发展的标志。 2. 计算机元件的更新换代 如半导体存储器、微处理器都在不断…

IDEA配置maven国内源

这里写目录标题 前言注意第一步 前言 为什么要配置maven国内源, 因为如果不配置国内源,一个是依赖加载速度过慢, 另一个是可能会导致创建spring / Springboot创建失败,或者是在maven项目中引入jar包失败,从而导致项目运行失败 注意 配置要配置俩次 第一步 选择settings …

【复习8-9天内容】【我们一起60天准备考研算法面试(大全)-第十三天 13/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

数字检测Y8S

【免费】数字检测Y8S&#xff0c;只需要OPENCV-深度学习文档类资源-CSDN文库 采用YOLOV8训练&#xff0c;得到PT模型&#xff0c;然后直接转ONNX&#xff0c;使用OPENCV的DNN&#xff0c;不需要其他依赖&#xff0c;支持C/PYTHON