云原生之使用Docker部署RabbitMQ消息中间件

云原生之使用Docker部署RabbitMQ消息中间件

  • 一、RabbitMQ介绍
    • 1.1 RabbitMQ简介
    • 1.2 RabbitMQ特点
    • 1.3 RabbitMQ使用场景
  • 二、检查Docker环境
    • 2.1 检查Docker版本
    • 2.2 检查操作系统版本
    • 2.3 检查Docker状态
  • 三、下载RabbitMQ镜像
  • 四、部署RabbitMQ服务
    • 4.1创建挂载目录
    • 4.2 运行RabbitMQ容器
    • 4.3 查看RabbitMQ容器状态
    • 4.4 检查RabbitMQ容器日志
  • 五、访问RabbitMQ首页
    • 5.1 进入RabbitMQ登录页
    • 5.2 访问RabbitMQ首页

一、RabbitMQ介绍

1.1 RabbitMQ简介

RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。RabbitMQ是一个开源的消息代理的队列服务器,用来通过普通协议在完全不同的应用之间共享数据。

1.2 RabbitMQ特点

  • 开源、性能优秀,稳定性保障
  • 提供可靠性消息投递模式、返回模式
  • 与Spring AMQP完美整合,API丰富
  • 集群模式丰富,表达式配置,HA模式,镜像队列模型
  • 保证数据不丢失的前提做到高可靠性、可用性

1.3 RabbitMQ使用场景

RabbitMQ是一个广泛使用的开源消息队列系统,它支持多种消息协议,其中AMQP(Advanced Message Queuing Protocol)是最常用的。以下是RabbitMQ的一些典型使用场景:

  1. 用户订单与库存处理:在电商系统中,当用户下单后,订单系统通过RabbitMQ将订单信息发送给库存系统,实现订单处理和库存减少的异步操作。这样即使库存系统暂时不可用,也不会阻碍订单的创建,确保了服务间的解耦和系统的高可用性。

  2. 异步通信:在分布式系统中,不同的服务组件可能需要协同工作,但不一定需要同步等待响应。例如,用户注册后,系统通过RabbitMQ异步发送欢迎邮件或短信通知,避免了用户界面长时间等待邮件发送完成。

  3. 任务调度与批处理:可以利用RabbitMQ安排定时任务或分发批量作业。例如,夜间的数据分析报告生成任务,可以在非高峰时段通过消息队列安排,避免影响白天的系统性能。

  4. 应用内的同步转异步:在处理高并发或资源密集型任务时,如图片上传后的格式转换、视频转码等,可以先将请求放入消息队列,由后台服务异步处理,提高应用响应速度。

  5. 消息通知系统:用于实时通知系统,如支付通知、物流状态更新等。当某个事件发生时,如一笔支付完成,系统通过RabbitMQ发送消息给订阅者,实现即时的通知服务。

  6. 发布/订阅模式:适用于需要广播消息到多个消费者的场景。例如,新闻推送系统可以将每条新发布的新闻通过交换机广播到所有订阅该类别的客户端。

  7. 日志收集与处理:系统组件可以将日志信息发送到RabbitMQ,由专门的日志收集服务进行处理和存储,这样可以避免日志处理影响主业务流程。

  8. 流量削峰与错峰处理:在高流量时期,如促销活动期间,系统可以通过消息队列暂存请求,平滑处理高峰期流量,避免直接冲击数据库或其他核心服务。

  9. 微服务间解耦:在微服务架构中,服务间通过RabbitMQ传递消息而非直接调用,增强了系统的可扩展性和容错性。

二、检查Docker环境

2.1 检查Docker版本

检查当前Docker版本

[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

2.2 检查操作系统版本

检查服务器操作系统版本,当前实践环境为centos7.6环境。

[root@jeven ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

2.3 检查Docker状态

检查Docker状态,确保宿主机Docker服务正常。

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: active (running) since Sun 2024-05-12 08:34:14 CST; 1 day 10h agoDocs: https://docs.docker.comMain PID: 11565 (dockerd)Tasks: 28Memory: 1.2GCGroup: /system.slice/docker.service

三、下载RabbitMQ镜像

下载RabbitMQ镜像bitnami/rabbitmq,版本为latest

[root@jeven ~]#  docker pull bitnami/rabbitmq
Using default tag: latest
latest: Pulling from bitnami/rabbitmq
0796bf144e3f: Pull complete
0aa278e6d559: Pull complete
f37134480d36: Pull complete
3ca5a05c65cf: Pull complete
88bb7bc42515: Pull complete
d707818752e6: Pull complete
b8a937a01956: Pull complete
efb772451b7f: Pull complete
db7fe513e59c: Pull complete
0d37a623156d: Pull complete
2e1d8d64104c: Pull complete
1bc67f22006e: Pull complete
891457114828: Pull complete
1161d96f1d40: Pull complete
Digest: sha256:a45676c71cf551fe942245b7ae133f9fd09f6278bb53fa98e18a00cf6abdbd90
Status: Downloaded newer image for bitnami/rabbitmq:latest
docker.io/bitnami/rabbitmq:latest

四、部署RabbitMQ服务

4.1创建挂载目录

创建挂载目录 /data/rabbitmq/data

mkdir -p /data/rabbitmq/data && cd /data/rabbitmq/

目录授权

 chmod -R 777 /data/rabbitmq/

4.2 运行RabbitMQ容器

使用docker-cli方式部署,可参考以下方式。

docker run -d --name rabbitmq --restart always  -v /data/rabbitmq/data:/bitnami   -e RABBITMQ_USERNAME=admin -e RABBITMQ_PASSWORD=admin    -p 5672:5672 -p 15672:15672       bitnami/rabbitmq:latest

使用docker compose方式,可参考以下docker-compose.yaml部署文件。本次实践使用docker compose方式部署,可自定义映射端口和账号密码登变量。

version: '3'
services:rabbitmq:image: bitnami/rabbitmq:latestcontainer_name: rabbitmqrestart: alwaysenvironment:- RABBITMQ_USERNAME=admin- RABBITMQ_PASSWORD=adminports:- 5672:5672- 15672:15672volumes:- /data/rabbitmq/data:/bitnami

使用以下命令,开始创建RabbitMQ容器。

docker compose up -d

在这里插入图片描述

4.3 查看RabbitMQ容器状态

检查RabbitMQ容器状态,确保容器正常启动。

[root@jeven rabbitmq]# docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
rabbitmq            "/opt/bitnami/script…"   rabbitmq            running             0.0.0.0:5672->5672/tcp, 0.0.0.0:15672->15672/tcp, :::5672->5672/tcp, :::15672->15672/tcp

4.4 检查RabbitMQ容器日志

检查RabbitMQ容器日志,确保RabbitMQ服务正常运行,无严重报错。

docker compose logs

在这里插入图片描述

五、访问RabbitMQ首页

5.1 进入RabbitMQ登录页

浏览器访问:http://192.168.3.166:15672/,将IP替换为自己服务器IP地址。如果无法访问到该登录页,检查本地防火墙是否关闭或者放行相关端口,云服务器则还需要再设置安全组规则。

在这里插入图片描述

5.2 访问RabbitMQ首页

输入我们设置的账号密码:admin/admin,登录RabbitMQ。

在这里插入图片描述

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

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

相关文章

【Qt】QMessageBox 各种对话框的默认显示效果

1. 函数原型 void about(QWidget *parent, const QString &title, const QString &text)void aboutQt(QWidget *parent, const QString &title QString())QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &…

使用li标签实现数据列表效果(鼠标移动和选中时均有阴影效果)

文章目录 一、最终效果&#xff1a;二、完整页面代码 一、最终效果&#xff1a; 选中的数据有阴影效果&#xff0c;鼠标移动时也有阴影效果 二、完整页面代码 list-style-type: none是去掉无序标签前的点的样式 <template><div><div class"my-new-lis…

打造坚固的SSH防护网:端口敲门入门指南

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 打造坚固的SSH防护网&#xff1a;端口敲门入门指南 前言什么是端口敲门端口敲门的优点1. 增强安全…

React的Redux的状态管理

步骤 1.创建新项目 npx create-react-app react-redux 2.安装配套工具 npm i reduxjs/toolkit react-redux 3.启动项目 npm run start 4.在src目录下创建store文件夹 5.在store文件夹下创建modules文件夹 6.在store文件夹里创建index.js文件 7.在counterStore.js文件…

自动化代码规范检查--Sonarqube部署

参考文档 官方文档安装数据库 官方给出几种数据库: # 我们选用postgres, 拉取镜像 docker pull postgres:16.0# 创建存储卷 docker volume create postgresql-data# 运行容器 docker run -d --name sonarqube-postgres \-p 5432:5432 \-e POSTGRES_DB=sonar_DB \-e POSTGRE…

高性价比蓝牙耳机有哪些?2024超高性价比蓝牙耳机推荐

在2024移动互联网高速发展的时代&#xff0c;蓝牙耳机已成为我们生活中不可或缺的一部分。走在街头&#xff0c;低头看手机&#xff0c;滑动屏幕选歌&#xff0c;耳边传来清晰的旋律&#xff0c;这一幕已经成为现代生活的标配。但面对市场上琳琅满目的蓝牙耳机品牌和型号&#…

数据库同步最简单的方法

数据库同步到底有咩有简单的方法&#xff0c;有肯定是有的&#xff0c;就看你有咩有缘&#xff0c;看到这篇文章&#xff0c;你就是有缘人。众所周知&#xff0c;数据库同步向来都不是一件简单的事情&#xff0c;它很繁琐&#xff0c;很费精力&#xff0c;很考验经验&#xff0…

力扣 刷题 使用双指针进行数组去重分析

目录 双指针 一、26.删除有序数组中的重复项 题目 题解 二、80. 删除有序数组中的重复项 II 题目 题解 三、27. 移除元素 题目 题解 双指针 我们这里所说的双指针实际上并不是真正的指针&#xff0c;它只是两个变量&#xff0c;用于标识数组的索引等&#xff0c;因其…

vue3封装表格嵌套表单问题汇总

1.插槽嵌套多层数据ui组件怎么使用 思路&#xff1a;插槽具名【区分】后暴露传递&#xff0c;这个为神魔要区分&#xff0c;因为封装组件表格列表项也有插槽 步骤一&#xff1a;表单插槽暴露 <ElFormclass"form-search":model"formParams"ref"form…

java基于ssm+jsp 多人命题系统

1管理员功能模块 管理员登录&#xff0c;管理员通过输入用户、密码等信息进行系统登录&#xff0c;如图1所示。 图1管理员登录界面图 管理员对个人中心进行操作填写原密码、新密码、确认密码并进行添加、删除、修改以及查看&#xff0c;如图2所示。 图2个人信息功能界面图 学…

台式电脑没有音响?你还可以用这 7 个软件把手机变成音响

台式电脑没有音响&#xff1f;你还可以用这 7 个软件把手机变成音响 怎么让手机当电脑音响 怎么让电脑连接手机的麦克风 手机怎么变电脑麦克风 1.AudioRelay 官网audiorelay加点net提供 Windows 和 Android 应用程序下载 再打开作为 Client 的 Android 端&#xff0c;它会自…

遥感数据并行运算(satellite remote sensing data parallell processing)

文章内容仅用于自己知识学习和分享&#xff0c;如有侵权&#xff0c;还请联系并删除 &#xff1a;&#xff09; 之前不太会用&#xff0c;单纯想记录一下&#xff0c;后面或许还会用到 1. 教程 [1] Pleasingly Parallel Programming: link 1.1 处理器&#xff0c;核和线程 …

申请免费6个月SSL证书方式和证书特点槽点

当前&#xff0c;HTTPS访问已成为网站标配。随着免费证书平台的不断涌现&#xff0c;Lets Encrypt尤为瞩目&#xff0c;其提供的泛域名和多域名证书申请功能&#xff0c;显著降低了站长和企业的经济负担。从一开始&#xff0c;来此加密就支持通过Lets Encrypt申请免费的域名SSL…

力扣:203. 移除链表元素(Java)

目录 题目描述&#xff1a;示例 1&#xff1a;示例 2&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入…

ONLYOFFICE 8.1版本桌面编辑器深度体验:创新功能与卓越性能的结合

ONLYOFFICE 8.1版本桌面编辑器深度体验&#xff1a;创新功能与卓越性能的结合 随着数字化办公的日益普及&#xff0c;一款高效、功能丰富的办公软件成为了职场人士的必备工具。ONLYOFFICE团队一直致力于为用户提供全面而先进的办公解决方案。最新推出的ONLYOFFICE 8.1版本桌面编…

Centos安装redis(附:图形化管理工具)

第一步&#xff1a;下载redis wget http://download.redis.io/releases/redis-6.2.7.tar.gz 第二步&#xff1a;解压 tar zxvf redis-6.2.7.tar.gz 第三步&#xff1a;安装依赖环境 yum -y install gcc-c第四步&#xff1a;安装依赖环境 make install第五步&#xff1a;修…

高频科技亮相SEMl-e2024第六届深圳国际半导体展,以超纯工艺推动行业发展

6月26-28日,SEMl-e2024第六届深圳国际半导体展在深圳国际会展中心(宝安新馆)隆重举办。本次展会以【“芯”中有“算”智享未来】为主题,汇聚800多家展商,集中展示了集成电路、电子元器件、第三代半导体及产业链材料和设备为一体的半导体产业链,搭建了供需精准对接、探索行业新发…

ElementUI笔记

Element&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。 首先安装 ElementUI。 需要再HTML的文档终端里输入 npm i element-ui -S 在 main.js 中写入以下内容&#xff1a; import ElementUI from element-ui ; import element-ui/lib…

超全汇总,性能测试常用指标大全

前言 两种性能指标 业务指标&#xff1b; 技术指标&#xff1b; 通常我们会从两个层面定义性能场景的需求指标&#xff0c;它们有映射关系&#xff0c;技术指标不能脱离业务指标 1、并发 狭义&#xff1a; 指同一个时间点执行相同的操作&#xff08;如&#xff1a;秒杀&am…

【ElementPlus源码】Container 布局容器

文章目录 index.tsContainerheaderutilswithInstallwithNoopInstall hooksuseNamespace 单元测试 看源码时候做的笔记。如有错误请指出&#xff01; 关于路径的省略&#xff0c;详见button&#xff1a;【ElementPlus源码】Button按钮-CSDN博客 index.ts 导入一堆组件&#xff…