RabbitMQ 快速上手:安装配置与 HelloWorld 实践(一)

一、引言

{"type":"load_by_key","key":"auto_image_0_0","image_type":"search"}

在当今分布式系统大行其道的技术浪潮下,各个服务之间的通信与协同变得愈发复杂。想象一下,一个电商系统在大促期间,订单服务、库存服务、支付服务、物流服务等众多模块需要紧密配合。如果没有一种高效的通信机制,系统很容易陷入混乱,出现响应缓慢、数据不一致等问题。消息队列,作为分布式系统中的关键组件,就像是一座桥梁,巧妙地连接起各个服务,让它们能够有条不紊地进行交互。

消息队列能够实现服务之间的解耦。比如在上述电商系统中,订单服务产生订单消息后,无需等待库存服务、物流服务等立刻处理,而是将消息发送到消息队列中,各服务可以根据自身的节奏从队列中获取消息进行处理。这样一来,即使某个服务暂时出现故障或者负载过高,也不会影响其他服务的正常运行。同时,消息队列还能应对高并发场景下的流量冲击,起到削峰填谷的作用。在秒杀活动时,大量的订单请求瞬间涌入,消息队列可以将这些请求先存储起来,然后按照系统能够承受的速率逐步处理,避免系统因瞬间高并发而崩溃。

而 RabbitMQ,作为消息队列领域的佼佼者,凭借其卓越的性能、丰富的功能和高可靠性,受到了广大开发者的青睐。它基于 AMQP(高级消息队列协议)实现,提供了灵活的消息路由机制、可靠的消息传递保障以及多种语言的客户端支持。无论是小型创业项目,还是大型企业级应用,RabbitMQ 都能游刃有余地满足各种消息队列需求。接下来,就让我们一起深入探索 RabbitMQ 的世界,从安装配置开始,一步步实现经典的 HelloWorld 示例,开启 RabbitMQ 的学习之旅。

二、RabbitMQ 是什么

RabbitMQ 是一个开源的消息代理和队列服务器,基于 AMQP(高级消息队列协议)实现 ,使用 Erlang 语言编写。它在分布式系统或微服务架构中扮演着至关重要的角色,用于在不同的服务、应用程序组件之间进行轻量级的消息通信。

在实际应用场景中,RabbitMQ 有着广泛的用途。以电商系统为例,当用户下单后,订单信息会作为消息发送到 RabbitMQ。订单服务作为生产者,无需等待库存服务、物流服务等同步处理订单,而是将消息放入 RabbitMQ 的队列中。库存服务和物流服务作为消费者,可以根据自身的处理能力,从队列中获取订单消息进行后续操作,如库存扣减、安排物流配送等。这样就实现了订单服务与其他服务之间的解耦,提高了系统的灵活性和可维护性。

再比如在一个内容发布平台中,当一篇新文章发布时,可能需要进行多种操作,如生成文章索引、发送推送通知给关注用户、更新相关统计数据等。这些操作可以通过 RabbitMQ 进行异步处理。发布文章的操作作为生产者将消息发送到 RabbitMQ,各个相关的处理逻辑作为消费者从队列中获取消息并执行相应任务,从而加快了主业务流程的执行速度,提升了用户体验。

总的来说,RabbitMQ 的核心作用主要体现在以下几个方面:

  • 应用解耦:降低不同服务或组件之间的依赖程度,使它们能够独立发展和演化。
  • 异步处理:将耗时的操作异步化,提高系统的响应速度和吞吐量。
  • 流量削峰:在高并发场景下,通过消息队列暂存请求,避免系统因瞬间高流量而崩溃 。

三、安装 RabbitMQ

3.1 前期准备

在安装 RabbitMQ 之前,需要先安装 Erlang 环境。因为 RabbitMQ 是基于 Erlang 开发的,两者版本之间存在对应关系,在安装时务必注意。你可以参考RabbitMQ 官方文档关于版本对应关系的说明 ,来选择合适的版本组合。例如,当安装 RabbitMQ 3.10.16 时,建议搭配 Erlang/OTP 25.3 及以上版本。

Erlang 的下载地址为:https://www.erlang.org/downloads,根据你的操作系统类型(Windows、Linux 等)选择对应的安装包进行下载。

3.2 安装 Erlang

Windows 系统
  1. 下载:从上述提供的 Erlang 下载地址,选择适合 Windows 系统的安装包,比如 64 位系统通常下载以 “otp_win64_” 开头的安装文件。
  1. 安装:双击下载的安装包,进入安装向导界面。点击 “Next”,选择安装路径,默认路径为 “C:\Program Files\erlXX.X”(XX.X 代表版本号),你也可以根据需求自定义路径,然后继续点击 “Next” 完成后续安装步骤。
  1. 配置环境变量:安装完成后,需要配置环境变量。右键点击 “此电脑”,选择 “属性”,点击 “高级系统设置”,在弹出的窗口中点击 “环境变量”。在 “系统变量” 区域,点击 “新建”,变量名输入 “ERLANG_HOME”,变量值为刚才安装的 Erlang 路径(如 “C:\Program Files\erlXX.X”)。接着找到 “Path” 变量,点击 “编辑”,新建一项,输入 “% ERLANG_HOME%\bin”,保存设置。
  1. 验证安装:打开命令提示符(CMD),输入 “erl -version”,如果输出 Erlang 的版本信息,则说明安装成功。例如:“Erlang (ERTS 11.1.8)[64 - bit] [smp:8:8] [ds:8:8:10] [async - threads:1] Eshell V11.1.8 (abort with ^G)” 。
Linux 系统(以 CentOS 为例)
  1. 安装依赖包:在安装 Erlang 之前,需要先安装一些依赖包,执行命令sudo yum install -y make gcc gcc - c++ kernel - devel m4 ncurses - devel openssl - devel 。这些依赖包为后续编译安装 Erlang 提供支持。
  1. 下载:通过命令行下载 Erlang 安装包,如wget http://erlang.org/download/otp_src_XX.XX.tar.gz(XX.XX 代表版本号) 。
  1. 解压:下载完成后,解压安装包,tar -zxvf otp_src_XX.XX.tar.gz ,进入解压后的目录cd otp_src_XX.XX 。
  1. 配置与编译:执行./configure命令进行配置,配置完成后执行make && make install进行编译和安装。这个过程可能需要一些时间,根据服务器性能不同而有所差异。
  1. 配置环境变量:编辑/etc/profile文件,在文件末尾添加export PATH=$PATH:/usr/local/lib/erlang/bin ,然后执行source /etc/profile使配置生效。
  1. 验证安装:在命令行输入 “erl”,如果进入 Erlang 的交互式环境,则说明安装成功。例如出现 “Erlang/OTP XX [erts - XX.XX] [source] [64 - bit] Eshell VXX.XX (abort with ^G)” 字样。

3.3 安装 RabbitMQ

Windows 系统
  1. 下载:从 RabbitMQ 官方下载地址https://www.rabbitmq.com/download.html,下载适合 Windows 系统的安装包,通常为.msi 后缀的文件。
  1. 安装:双击下载的安装包,按照安装向导提示进行安装,一路点击 “Next” 即可,安装过程中可以选择安装路径等选项。
  1. 启动服务:安装完成后,打开命令提示符,进入 RabbitMQ 安装目录下的 sbin 文件夹(例如 “C:\Program Files\RabbitMQ Server\rabbitmq_server - XX.XX\sbin” ,XX.XX 为版本号) ,执行命令 “rabbitmq - server.bat start” 来启动 RabbitMQ 服务。也可以将 RabbitMQ 服务设置为开机自启,在命令提示符中执行 “sc create RabbitMQ binpath= "C:\Program Files\RabbitMQ Server\rabbitmq_server - XX.XX\sbin\rabbitmq - server.bat start" start= auto” 。
Linux 系统(以 CentOS 为例)
  1. 下载:使用命令wget https://github.com/rabbitmq/rabbitmq - server/releases/download/vXX.XX/rabbitmq - server - XX.XX - 1.el7.noarch.rpm(XX.XX 为版本号)下载安装包。
  1. 安装:下载完成后,执行命令sudo rpm -ivh rabbitmq - server - XX.XX - 1.el7.noarch.rpm进行安装。安装过程中可能会提示一些依赖关系,确保系统已安装相关依赖。如果缺少依赖,可根据提示使用sudo yum install命令安装相应的依赖包。
  1. 启动服务:安装完成后,使用命令sudo systemctl start rabbitmq - server启动 RabbitMQ 服务。可以通过sudo systemctl status rabbitmq - server查看服务状态,若显示 “active (running)” 则表示服务已成功启动。还可以设置开机自启,执行sudo systemctl enable rabbitmq - server 。

3.4 开启 Web 管理插件

安装完成 RabbitMQ 后,默认的 Web 管理插件是关闭的,需要手动开启。

  1. 开启插件:在命令行中执行开启 Web 管理插件的命令。在 Windows 系统下,进入 RabbitMQ 安装目录的 sbin 文件夹,执行rabbitmq - plugins.bat enable rabbitmq_management;在 Linux 系统下,执行sudo rabbitmq - plugins enable rabbitmq_management 。执行该命令后,系统会启用 RabbitMQ 的 Web 管理插件,相关的插件如 mochiweb、webmachine 等也会一并启用。
  1. 重启服务:开启插件后,需要重启 RabbitMQ 服务,使配置生效。在 Windows 系统中,在命令提示符执行 “rabbitmq - server.bat restart”;在 Linux 系统中,执行sudo systemctl restart rabbitmq - server 。
  1. 访问 Web 管理界面:重启服务后,在浏览器中输入 “http://localhost:15672/”(如果是远程服务器,将localhost替换为服务器 IP 地址),即可访问 RabbitMQ 的 Web 管理界面。默认的登录账号是 “guest”,密码也是 “guest” 。不过,出于安全考虑,建议在生产环境中创建新的用户并设置强密码,同时限制 “guest” 用户的访问权限。例如,在 Linux 系统中,可以使用以下命令创建新用户并设置权限:
    • 创建用户:sudo rabbitmqctl add_user username password(将 username 和 password 替换为自定义的用户名和密码)。
    • 设置用户角色为管理员:sudo rabbitmqctl set_user_tags username administrator 。
    • 设置用户权限:sudo rabbitmqctl set_permissions -p "/" username ".*" ".*" ".*" 。

通过以上步骤,你已经成功安装并配置了 RabbitMQ 及其 Web 管理插件,接下来就可以深入探索 RabbitMQ 的各种功能和使用场景了 。

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

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

相关文章

【deekseek】TCP Offload Engine

是的,TOE(TCP Offload Engine)通过专用硬件电路(如ASIC或FPGA)完整实现了TCP/IP协议栈,将原本由CPU软件处理的协议计算任务完全转移到网卡硬件中。其延迟极低的核心原因在于 硬件并行性、零拷贝架构 和 绕过…

JavaScript 的编译与执行原理

文章目录 前言🧠 一、JavaScript 编译与执行过程1. 编译阶段(发生在代码执行前)✅ 1.1 词法分析(Lexical Analysis)✅ 1.2 语法分析(Parsing)✅ 1.3 语义分析与生成执行上下文 🧰 二…

WORD个人简历单页326款模版分享下载

WORD个人简历模版下载:WORD个人简历模版https://pan.quark.cn/s/7e79a822c490

Android 中 显示 PDF 文件内容(AndroidPdfViewer 库)

PDFView 是一个用于在 Android 应用中显示 PDF 文档的库。它提供了丰富的功能和灵活的配置选项,使得开发者能够轻松地在应用中嵌入 PDF 阅读器。 一、 添加依赖 在模块的 build.gradle 文件中添加以下依赖: // pdfimplementation("com.github.bar…

微信小程序学习之搜索框

1、第一步&#xff0c;我们在index.json中引入vant中的搜索框控件&#xff1a; {"usingComponents": {"van-search": "vant/weapp/search/index"} } 2、第二步&#xff0c;直接在index.wxml中添加布局&#xff1a; <view class"index…

OpenCL C++ 常见属性与函数

核心对象与属性 对象/属性描述示例cl::Platform表示OpenCL平台cl::Platform::get(&platforms)cl::Device表示计算设备cl::Device::getDefault()cl::Context管理设备、内存和命令队列的上下文cl::Context(contextDevices)cl::CommandQueue命令队列,用于提交命令cl::Command…

Milvus 视角看重排序模型(Rerankers)

在信息检索和生成式人工智能领域&#xff0c;重排序器是优化初始搜索结果顺序的重要工具。重排序器与传统的嵌入模型不同&#xff0c;它将查询和文档作为输入&#xff0c;并直接返回相似度得分&#xff0c;而不是嵌入。该得分表示输入查询和文档之间的相关性。 重排序器通常在…

C语言:gcc 如何调用 Win32 打开文件对话框 ?

在 Windows 平台上使用 gcc 调用原生 Win32 API 实现文件打开对话框是可行的&#xff0c;但需要直接使用 Win32 的 GetOpenFileName 函数&#xff08;位于 commdlg.h 头文件&#xff0c;依赖 comdlg32.lib 库&#xff09;。以下是完整实现步骤和代码示例&#xff1a; 编写 file…

计算机视觉与深度学习 | Python实现EMD-SSA-VMD-LSTM时间序列预测(完整源码和数据)

EMD-SSA-VMD-LSTM混合模型 一、环境配置与依赖二、数据生成&#xff08;示例数据&#xff09;三、多级信号分解1. 经验模态分解&#xff08;EMD&#xff09;2. 奇异谱分析&#xff08;SSA&#xff09;3. 变分模态分解&#xff08;VMD&#xff09; 四、数据预处理1. 归一化处理2…

vue配置子路由,实现点击左侧菜单,内容区域显示不同的内容

文章目录 一、路由链路二、实现步骤准备二级路由下的.vue文件配置子路由声明router-view标签为菜单项 el-menu-item 设置index属性&#xff0c;设置点击后的路由路径 三、参考资料 一、路由链路 二、实现步骤 准备二级路由下的.vue文件 配置子路由 router/index.js import {…

ModuleNotFoundError: No module named ‘SDToolbox‘

(py311) C:>python Python 3.11.11 | packaged by Anaconda, Inc. | (main, Dec 11 2024, 16:34:19) [MSC v.1929 64 bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. from SDToolbox import PostShock_eq Tracebac…

Hi3516DV500刷写固件

hi3516DV500刷固件 1、硬件连接 2、软件准备 3、刷固件步骤 一、硬件连接 特别注意的是&#xff0c;串口的接线顺序 通过网线连接好笔记本和开发板后&#xff0c;需要确认一下网口水晶头是否闪烁&#xff0c;以确认网络物理是否连通 二、软件资源准备 固件包准备 打开工具…

正则表达式r前缀使用指南

正则表达式中的 r&#xff1a;解锁字符串转义的魔法 正则表达式是处理字符串的强大工具&#xff0c;但它常常伴随着转义字符的复杂性。如果你曾因 \n、\t 或 \\ 的使用而困惑&#xff0c;那么这篇文章将为你揭开谜底&#xff0c;解释为什么 r 是正则表达式中的「神奇武器」。本…

网络攻防模拟:城市安全 “数字预演”

在当今数字化快速发展的时代&#xff0c;网络安全和城市安全面临着前所未有的挑战。为有效应对这些挑战&#xff0c;利用先进的技术搭建模拟演练平台至关重要。图扑软件的 HT for Web 技术&#xff0c;为网络攻防模拟与城市安全演练提供了全面且高效的解决方案。 三维场景搭建&…

AI模型开发全流程笔记

一、训练数据准备阶段 数据采集标准 格式要求&#xff1a;严格QA对形式&#xff08;1问1答&#xff09; 数量基准&#xff1a; 基础量&#xff1a;500组QA对 优化量&#xff1a;800-1000组QA对 内容规范&#xff1a; 聚焦单一业务节点&#xff08;如售后场景&#xff09; …

1688 数据接口调用秘籍:高效获取商品实时信息的开发指南

在电商行业竞争白热化的当下&#xff0c;企业想要抢占市场先机&#xff0c;实时掌握商品信息至关重要。作为国内 B2B 电商巨头&#xff0c;1688 平台汇聚海量商品资源&#xff0c;通过高效调用其数据接口获取商品实时信息&#xff0c;能为企业价格策略制定、库存管理、竞品分析…

milvus学习笔记

本文主要由AI生成&#xff0c;请注意自己查看源代码校验。 Milvus v2.4 系统架构概览 Milvus 采用分布式微服务架构&#xff0c;将计算层&#xff08;Proxy、QueryCoord、QueryNode、IndexCoord、DataCoord、DataNode 等&#xff09;与存储层&#xff08;Pulsar、MinIO/S3、e…

使用教程:8x16模拟开关阵列可级联XY脚双向导通自动化接线

以下通过点亮LED进行基本使用流程演示&#xff0c;实际可以连接复杂外设&#xff08;SPI、CAN、ADC等&#xff09; 单模块使用 RX、TX、5V和GND接到串口模块&#xff1b;X5接5V&#xff1b;Y2接LED;LED-接GND 串口模块插上电脑后&#xff0c;LED没有亮&#xff1b;因为此时模…

HarmonyOS NEXT~鸿蒙应用上架指南:HarmonyOS应用发布全流程解析

HarmonyOS NEXT&#xff5e;鸿蒙应用上架指南&#xff1a;HarmonyOS应用发布全流程解析 引言 随着华为鸿蒙操作系统(HarmonyOS)生态的快速发展&#xff0c;越来越多的开发者希望将自己的应用上架到鸿蒙应用市场。本文将详细介绍鸿蒙应用上架的全流程&#xff0c;帮助开发者顺…

20250517 我设想一个空间,无限大,空间不与其中物质进行任何作用,甚至这个空间能容纳可以伸缩的空间

1.我设想一个空间&#xff0c;无限大&#xff0c;空间不与其中物质进行任何作用&#xff0c;甚至这个空间能容纳可以伸缩的空间 您设想的这个空间具有一些有趣的特点&#xff1a; 无限大&#xff1a;空间本身没有边界或限制&#xff0c;理论上可以容纳无限多的物质或结构。非…