云原生之使用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…

【React篇】父组件渲染时避免重复渲染子组件的3种处理方法

在 React 中&#xff0c;父组件渲染时要避免重复渲染子组件&#xff0c;可以使用以下方法&#xff1a; 使用 React.memo&#xff08;仅适用于函数式组件&#xff09;或 PureComponent&#xff08;适用于类组件&#xff09;&#xff1a; 这些方法可以帮助你创建在接收到新的 pr…

图论·搜索最短路径

例题地址 搜索最短路径 在网格图中按照特定路线搜索&#xff0c;搜索方式基于bfs/dfs需要搜索出一条源点与终点最短的路径 核心思路 无启发式函数&#xff1a;bfs/dfs有启发式函数&#xff1a;dijsktra算法,A*(Astar)… 个人理解 启发式函数&#xff1a;相当于根据点的权…

[沫忘录] Redis的配置与使用技巧

[沫忘录] Redis的配置与使用技巧 windows的Redis文件配置 windows下的redis文件配置信息主要集中在"redis.windows.conf"这一文件当中。 配置文件中以下参数可以设置Redis的内存大小和栈空间大小。 maxmemory 字节数 maxheap 字节数redis十大数据类型 key的常见…

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

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

中介子方程三十六

XXFXXuXXWXXuXXdXXrXXαXXuXpXXKXηXiXXnXXiXηXKXXpXuXXαXXrXXdXXuXWXπXXWXeXyXeXbXπXpXXNXXqXeXXrXXαXXuXpXXKXηXiXXnXXiXηXKXXpXuXXαXXrXXeXqXXNXXpXπXbXeXyXeXWXXπXWXuXXdXXrXXαXXuXpXXKXηXiXXnXXiXηXKXXpXuXXαXXrXXdXXuXXWXXuXXFXXEXXyXXEXXrXXαXXuXpXXKXη…

Java_Java基础:HashCode详解

Hashcode的作用 java的集合有两类&#xff0c;一类是List&#xff0c;还有一类是Set。前者有序可重复&#xff0c;后者无序不重复。当我们在set中插入的时候怎么判断是否已经存在该元素呢&#xff0c;可以通过equals方法。但是如果元素太多&#xff0c;用这样的方法就会比较满…

【Python】Tkinter图形用户界面

窗口管理 tk.TK()&#xff1a;创建主窗口对象。 参数&#xff1a;无。 返回值&#xff1a;返回一个 Tkinter 主窗口对象。 import tkinter as tk root tk.Tk() # 创建主窗口root.mainloop()&#xff1a;启动 Tkinter 主事件循环&#xff0c;使窗口保持显示并等待用户交互…

网络扫描工具Nmap

一、Nmap简介 Nmap是一款功能强大的网络扫描工具&#xff0c;用于网络发现和安全审计。 Nmap&#xff0c;即网络映射器&#xff08;Network Mapper&#xff09;&#xff0c;是一个广受欢迎的开源工具&#xff0c;主要用于网络的主机发现、端口扫描、服务检测以及操作系统识别…

Java 中常见的数据结构算法及其应用

Java 中常见的数据结构算法及其应用 在Java编程中&#xff0c;选择合适的数据结构对程序的性能和可维护性至关重要。本文将详细介绍Java中常见的数据结构及其应用场景&#xff0c;包括数组、链表、栈、队列、双端队列、集合、映射、堆、树、图和列表。 1. 数组 (Array) 数组…

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文件…

Python入门-基础知识-模块

Python程序中的模块的功能与函数相似&#xff0c;有助于更好地组织代码&#xff0c;提高代码的利用率。模块是一 种以“.py”为扩展名的文件&#xff0c;其中可以包含变量、函数等各种代码形式。导入模块后&#xff0c;就可以使用 模块中的变量、函数等。Python库着重强调功能性…

随着量子计算的崭露头角,C 语言在未来是否需要做出适应性的改变,以适应新的计算架构和算法?

随着量子计算的发展&#xff0c;C语言可能需要进行一些适应性的改变以适应新的计算架构和算法。量子计算与经典计算存在很大的差异&#xff0c;涉及到量子比特、量子门和量子算法等概念。因此&#xff0c;为了更好地支持量子计算&#xff0c;C语言可能需要引入新的数据类型和算…

JS面试题7——localStorage,sessionStorage,cookie的区别

公共点&#xff1a;都是用于在客户端存放数据的 区别&#xff1a; 1. 数据存放的有效期不同 <script> sessionStorage.setItem("key", "123"); // 仅在当前浏览器窗口关闭前有效 localStorage.setItem("key", "456"); // 持久化…

自动化代码规范检查--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…

PostgreSQL删除重复数据同时保留每组中的一条记录

PostgreSQL删除重复数据同时保留每组中的一条记录 在 PostgreSQL 中&#xff0c;你不能直接从一个 CTE&#xff08;公共表表达式&#xff09;中删除数据&#xff0c;因为 CTE 只是一个临时的结果集&#xff0c;它并不直接对应一个可以更新的表。但是&#xff0c;你可以使用 CT…

Nsight Compute 是怎么计算Roofline的呢

Nsight Compute 是怎么计算Roofline的呢 1.参考链接2.小结3.Nsight Compute 是怎么计算Roofline的呢4.生成测试程序5.测试规模为8192时的性能6.计算Roofline7.指标解释8.测试规模为1024时的性能9.测试规模为128时的性能10.RTX 3060基础能力测试11.sm__inst_executed.avg.pct_of…

IPv6测试指标有哪些?怎么看网站是否完成IPv6升级改造?

IPv6是互联网第六代协议&#xff0c;以其近乎无限的地址资源为未来互联网的发展提供了广阔空间和无限可能&#xff0c;为物联网、大数据、人工智能等新基建的蓬勃发展提供了坚实的网络支撑。我国高度重视IPv6的发展建设&#xff0c;自2017年《推进互联网协议第六版&#xff08;…

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

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