RabbitMQ速通--01消息队列概述与安装

RabbitMq 消息队列的安装、使用 、原理 年后刚上班这几天有点清闲,有时间要赶快利用,去年我们有一个项目要将视频传到YouTube上,上传成功后YouTube有一个自动截图的功能,截取视频图片后国外的一台服务器上的程序就会调用国内的一台服务器上的接口然后将图片传过来进行更新数据,原来的实现方式就是通过HttpClient连接接口传输数据实现的,这样会有很大问题,我想大家都知道如果在数据传输的过程中国内服务器上的服务进行了从新启动那么就会造 阅读详情

消息队列概述

消息队列是一种进程间通信或同一进程内不同线程的通信方式,用于解决系统间的异步通信和解耦问题

基本概念

  • 消息(Message)
    • 是消息队列系统中的基本数据单位,包含消息头和消息体
    • 消息通常具有持久化属性,确保再系统故障时不会丢失
    • 消息头(包含元数据信息)
      • 消息ID(唯一标识符)
      • 时间戳(创建/发送时间)
      • 优先级(处理优先级)
      • 过期时间(TTL)
      • 路由信息(目的地等)
    • 消息体(实际传输的数据内容)
      • 文本格式(JSON/XML/纯文本)
      • 二进制数据(图片/视频等)
  • 队列(Queue)
    • 是消息的存储和管理核心
    • FIFO特性
      • 严格保证先进先出顺序(某些高级队列支持优先级)
    • 容量控制
      • 可以设置最大消息数和存储大小限制
    • 状态管理
      • 维护消息的可见状态(待处理/处理中/已完成)
    • 死信队列
      • 处理失败消息的特殊队列
  • 生产者(Producer)
    • 发送消息的应用程序
    • 主要职责
      • 消息构建:创建符合规范的消息结构
      • 路由选择:确定消息应发送到那个队列/主题
      • 错误处理:处理发送失败的情况(重试/记录等)
      • 流量控制:根据消费者能力调节发送速率
  • 消费者(Consumer)
    • 接收并处理消息的应用程序
    • 主要功能
      • 消息获取:主动拉取或被动接收消息
      • 消息确认:处理成功后发送ACK,失败时NACK
      • 并发控制:管理处理线程/协程数量
      • 幂等处理:确保重复消息不会导致异常
  • 交换机(Exchange)
    • 直连交换机(Direct Exchange)
      • 工作原理:将消息路由到Binding Key与Routing Key完全匹配的队列
      • 使用场景:点对点精确消息传递
      • 特点:完全匹配路由键,一个消息通常只路由到一个队列(除非多个队列绑定相同路由键)
    • 扇出交换机(Fanout Exchange)
      • 工作原理:将消息路由到所有绑定到该交换机的队列,忽略路由键
      • 使用场景:广播消息
      • 特点:不处理路由键,消息会发送到所有绑定的队列,性能最高
    • 主题交换机(Topic Exchange)
      • 工作原理:基于通配符匹配规则将消息路由到匹配的队列
      • 使用场景:基于模式的消息路由
      • 特点:路由键可以使用通配符(*匹配一个单词,#匹配零个或多个单词)
    • 头交换机(Headers Exchange)
      • 工作原理:基于消息头(Headers)而非路由键进行匹配
      • 使用场景:基于消息属性的复杂路由
      • 特点:忽略路由键,使用headers属性匹配,可以指定x-match为all(所有header必须匹配)或any(任一header匹配)
  • 代理(Broker)
    • 核心功能
    • 消息路由
      • 根据规则将消息分发到正确队列
    • 持久化存储
      • 将消息写入磁盘防止丢失
    • 访问控制
      • 管理生产者和消费者的权限
    • 监控统计
      • 收集消息流量和处理指标
    • 集群管理
      • 再多节点间协调消息分发

核心特性

  • 异步通信
    • 非阻塞操作
      • 生产者发送后立即返回,不等待消费者处理
    • 回调机制
      • 可选择性设置处理完成的通知回调
    • 延迟消息
      • 支持定时/延迟投递功能
    • 事务支持
      • 与业务操作组成分布式事务
  • 解耦
    • 接口简化
      • 生产者和消费者只需与Broker交互
    • 协议中立
      • 不同系统可使用不同协议通信
    • 独立演进
      • 双方可独立升级不影响对方
    • 多语言支持
      • 不同语言客户端可互通
  • 流量控制
    • 缓冲机制
      • 吸收突发流量峰值
    • 速率限制
      • 控制消费者处理速度
    • 负载均衡
      • 再多消费者间分配消息
    • 弹性扩展
      • 根据负载动态增减资源
  • 可靠性
    • 持久化
      • 消息写入磁盘存储
    • 复制机制
      • 多副本防止单点故障
    • 确认机制
      • 消费者显示确认处理完成
    • 重试策略
      • 失败消息自动重试
    • 死信处理
      • 无法处理的消息特殊处理
  • 扩展性
    • 水平扩展
      • 可添加更多Broker节点
    • 分区机制
      • 大队列分割为多个分区
    • 消费者组
      • 多消费者并行处理
    • 无状态设计
      • 方便动态扩容

常见消息队列模式

  • 点对点
    • 工作流程
      1. 生产者发送消息到指定队列
      2. 单个消费者从队列获取消息
      3. 消息处理完成后从队列移除
      4. 如果有多个消费者,消息会被均衡分配
    • 关键特性
      • 消息的独占性消费
      • 自动负载均衡
      • 严格的顺序保证
      • 临时队列支持(请求响应模式)
  • 发布/订阅
    • 工作流程
      1. 生产者发布消息到特定主题
      2. Broker将消息复制到所有订阅者队列
      3. 每个订阅者独立接收完成消息副本
      4. 消息持久化根据配置决定
    • 关键特性
      • 一对多消息分发
      • 消费者独立消费进度
      • 可选择持久化订阅
      • 灵活的路由策略(主题匹配/通配符)
    • 变体模式
      • 扇出:无条件广播给所有订阅者
      • 主题路由:基于主题匹配的智能路由
      • 头路由:基于消息头的路由

安装rabbitMQ

这里为了方便,也是迎合潮流,选择在docker中安装rabbitMQ

  1. 安装docker
    1. 详情见我的另一篇文章https://blog.youkuaiyun.com/bugnotfound/article/details/146439513
  2. 拉取RabbitMQ镜像
    1. 这里可以选择最新版和指定版本,如果要查看版本可以去官方镜像仓库查看https://hub.docker.com/_/rabbitmq/
    2. 如果要拉取最新版本直接可以使用docker pull rabbitmq:latest
    3. 执行完命令后通过docker images命令来查看是否下载成功
    4. 下面我会以最新版来进行安装(其实是为了偷懒,将版本号换成了latest)
  3. 启用rabbitMQ容器
    1. docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:latest
    2. 这里使用了docker的端口映射,将容器的5672映射到了物理机的5672端口,将容器的15672映射到了物理机的15672端口
    3. 其中5672端口是rabbitMQ用于消息接收,15672是用于控制面板
    4. 使用docker ps命令可以查看rabbitMQ是否正常启动
  4. 开启web管理页面
    1. 使用docker exec -it rabbitmq /bin/bash命令进入到容器
    2. 使用rabbitmq-plugins enable rabbitmq_management开启web管理页面插件
  5. 访问rabbitMQ控制面板
    1. http://主机ip:15672
    2. 默认的账号和密码都是guest
Centos7安装RabbitMQ详细教程 RabbitMQ安装遇到错误 Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details. RabbitMQ在Centos7上安装启动详细教程!!! 阅读详情

相关推荐

基于QEMU的openEuler aarch64虚拟机快速部署与漏洞验证指南

本文提供了一份基于QEMU在个人电脑上快速部署openEuler aarch64虚拟机的详细指南。内容涵盖从软件准备、目录规划、QEMU安装、虚拟磁盘创建到系统安装与SSH配置的全过程,并以CVE-2024-1086内核漏洞为例,演示了如何在该虚拟环境中进行安全漏洞的验证与补丁测试,为安全研究和运维测试提供了一个低成本、高效率的ARM架构沙箱环境。

earth的博客 438

01、RabbitMQ入门

目录1.、什么是MQ2、应用场景 3、主流MQ框架4、Docker安装部署RabbitMQ 5、RabbitMQ管理平台6、MQ的核心概念单一生产者和单一消费者7、springboot整合rabbitmq执行测试方法testRabbitmq,控制台输出:receive msg : test rabbitmq message !!! 1.安装好rabbitmq,登陆RabbitMQ管理平台,新增管理用户并设置权限 2.pom.xml添加rabbitmq依赖 3.rabbitmq连接配置 4.创建

全栈 1万+

VLA、世界模型与端到端在智驾中的本质关系与工程落地

世界模型并非3D重建,而是对环境状态转移函数的可微分建模;VLA不是视觉+语言+动作的简单拼接,核心在于跨模态语义对齐。二者共同支撑具身智能系统实现从感知到行动的闭环推演,其技术价值体现在长尾场景泛化能力提升与决策延迟降低。在自动驾驶领域,真实量产方案均采用VLA架构作为多模态感知基础,嵌入轻量级世界模型以支持反事实轨迹推演,并通过WA硬件封装保障实时性,最终由端到端控制层完成像素到扭矩的语义贯通。这种混合架构已成L2+/L3智驾系统的工程共识。

weixin_34163553的博客 365

消息队列RabbitMQ.01.安装部署与基本使用

后来的方式改成了:小红对小明说「我放到书架上的书你都要看」这将会出现虽然用户数据记录很快的添加到数据库中了。服务之间最常见的通信方式是直接调用彼此来通信。之前的方式是这样:小红问小明什么时候有空。比起小红把书递给小明并监督小明读完的方式。会员系统:更新用户的积分和等级信息。然后小红每次发现不错的书都放到书架上。当明天有另一个爱读书的小伙伴小强加入。重新给用户推荐他可能感兴趣的商品。但是却卡在发邮件或分析信息时的情况。小红相信小明的读书自觉和读书能力。的一个重要注意事项是它根据所谓的。

d2916172682的博客 2000

Qt QChart实战:从零打造一个实时温度监控仪表盘(附完整源码)

本文详细介绍了如何使用Qt QChart模块从零构建一个工业级实时温度监控仪表盘。通过实战案例,展示了波形图的绘制、坐标轴配置、数据流模拟等关键技术,并提供了完整的源码实现,帮助开发者快速掌握Qt在数据可视化领域的应用。

weixin_42537919的博客 242

共享最近邻相似度

共享最近邻相似度 第三十四次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。本文作为基于图的聚类的第二部分,主要针对“共享最近邻相似度(Shared Nearest Neighbour)”以及使用该度量的“Jarvis-Patrick聚类”进行介绍。其他基于图的聚类算法的链接可以在这篇综述《基于图的聚类算法综述(基于图的聚类算法开篇)》的结尾找到。 S...

Ἥλιος 7606

RabbitMQ01_消息队列概述、使用场景、劣势、架构图与主要概念、Docker快速安装Rabbitmq、角色分类

消息队列概述、使用场景、劣势、架构图与主要概念、Docker快速安装Rabbitmq、角色分类

所得皆惊喜 2670

成功解决raise Py4JError py4j.protocol.Py4JError: py4j.protocol.Py4JError: Could not find py4j jar at 

成功解决raise Py4JError("Could not find py4j jar at {0}".format(jarpath)) py4j.protocol.Py4JError: Could not find py4j jar at 目录 解决问题 解决思路 解决方法 1、第一步安装jdk 2、第二步安装或升级py4j 解决问题 raise Py4JError("Could not find py4j jar at {0...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 4624

centos安装rabbitmq消息队列

开源的消息队列系统很多如erlang开发的rabbitmq,java开发的activemq,redis的list也可以实现,workerman也有消息队列 我们项目用的是rabbitmq,它的优点 1、基于erlang语言开发具有高可用高并发的优点,适合集群服务器 2、健壮、稳定、易用、跨平台、支持多种语言、文档齐全 3、有消息确认机制和持久化机制,可靠性高 消息队列(Message

爱代码也爱生活 6663

激光除草技术原理与应用全解析

激光除草技术通过光热、光化学等效应精准破坏杂草组织,核心参数包括功率(20-6000W)、波长(400nm-10.6μm)和脉冲宽度。主要应用于大田作物(如玉米、棉花)、经济作物(烟草、果树)及城市绿化,具有环保(无化学污染)、高效(识别率≥95%)和非接触等优势,但存在设备成本高(20-50万元)、技术门槛高等局限。当前技术融合AI识别、多光谱协同等创新,国产设备如华工智耘已实现95.3%识别精度。虽短期投入较高,但长期可降低30%除草成本,并带来环境效益(每亩减排1.2吨CO₂)

start_up_go的博客 556

ROS 之 使用yocs_velocity_smoother对机器人速度进行限制

yocs_velocity_smoother是一个速度、加速度限制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。Bound incoming velocity messages according to robot velocity and acceleration limits. The velocity smoother nodelet runs together with the kobuki_node to apply robot’s velocity and .

https://shixuebin.gitee.io/hexo-blog/ 2621

01-RabbitMQ消息队列

​ 消息队列(,简称MQ)指保存消息的一个容器,其实本质就是一个保存数据的队列。​ 消息中间件是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的构建。​ 消息中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用,可伸缩和最终一致性的系统架构。使用较多的消息队列有ActiveMQRabbitMQKafkaRocketMQ等。ActiveMQ​​ 官网:https://activemq.apache.org/

m0_71788802的博客 1078

NVIDIA Isaac GR00T N1.5 人形机器人强化学习入门教程(四)Lerobot、宇树 G1 等不同形态机器人微调教程

本笔记本是一份关于如何在新的数据集上对GR00T-N1预训练模型进行微调的教程。

2506_90492529的博客 1666

【RabbitMQ笔记01】Windows搭建RabbitMQ消息队列基础运行环境

RabbitMQ是一款遵循AMQP协议的消息队列,这里说的AMQP是一个高级消息队列协议,它定义了消息队列的基础模型,AMQP协议的消息队列有很多,其中RabbitMQ就是其中之一。消息队列,其实就是一个专门用于存储消息的容器,生产者生产消息,消费者消费消息。RabbitMQ是一个采用Erlang语言编写的消息队列,要使用RabbitMQ,首先就需要确保系统中存在Erlang的运行环境。

✅ Java 开发工程师 1682

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

微服务 · 消息队列 · RabbitMQ

消息队列的案例与基础,想学习的朋友快看过来吧~

Please_teach_me的博客 1857

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

RabbitMQ (消息队列)专题学习01 RabbitMQ部署

RabbitMQ专题学习之简介和部署,详细介绍了基于Windows平台的部署

u014548782的专栏 1590

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

消息队列服务rabbitmq安装配置

为什么80%的码农都做不了架构师?>>> ...

weixin_34388207的博客 376

RabbitMQ 01 概述

概述

天河有尽后为涯,星海无边前作岸。 1091

rabbitmq 01

MQ(Message Queue)消息队列(消息中间件),是基础数据结构中“先进先出”的一种数据结构。指把要传输的数据(消息)放在队列中,用队列机制来实现消息传递——生产者产生消息并把消息放入队列,然后由消费者去处理。消费者可以到指定队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息,来实现进程之间的通信​消息生产者把消息发送给消息队列,消息队列存储转发消息,消息消费者接收消息、处理消息。

Rancemy的博客 1063

构建高可用消息队列系统 01

RabbitMQ是一个开源的消息代理软件,实现了高级消息队列协议(AMQP),并提供了可靠的消息传递、灵活的路由、消息确认机制等特性。它是一个强大的工具,用于构建分布式系统中的异步通信和解耦,同时也适用于构建大规模的数据处理系统。RabbitMQ的核心概念包括交换机、队列、绑定等,通过这些概念,可以实现灵活的消息路由和处理。在分布式系统中,RabbitMQ能够提供高可用性、可靠性和灵活性,使得系统能够更好地应对高并发和大规模数据处理的挑战。

2201_75869073的博客 1116

【MQ01】什么是消息队列?用哪个消息队列?

什么是消息队列?用哪个消息队列?来了来了,消息队列系列总算来咯。对于搜索引擎相关的知识大家消化的怎么样呀?其实对于搜索引擎来说,我们学习的内容还是挺全面的,也算是比较深入了。而对于消息队列来说,我不准备写得太深入,因为对于这个东西,实战并不算多,主要的原因咱们在今天这篇文章结束的时候再详细的来说吧。先来说概念,到底啥是消息队列?那么多种消息队列工具,或者叫消息队列中间件,我们应该选择哪个呢?我将以...

硬核项目经理 1236

消息队列RabbitMQ学习01

在同步调用中,发送方在发送消息后会等待接收方处理这条消息, 并立即返回结果。特定时间内,消息队列能够处理的消息数量,通常以每秒处理的消息数来衡量,吞吐量是评估消息队列性能的重要指标,它影响系统的响应能力和数据处理效率。异步调用中,发送方发送消息后,无需等待接收方的处理结果,立即返回。由于发送方需要等待响应,当处理时间较长时,可能导致性能下降。发送方可以立即继续处理其他任务,增强了系统的灵活性。实现相对复杂,因为发送方需要处理超时和重试逻辑。发送方会阻塞等待接收到的消息的处理结果。

2301_80412275的博客 881

RabbitMQ消息队列

一个生产者多个消费者,每个消费者都有自己的队列,生产者没有吧消息直接发送到队列,而是发送到了交换机,每个队列都绑定到交换机,生产者发送的消息,经过交换机,到达队列,实现,一个消息被多个消费者获取的目的。RabbitMQ作为一个消息代理,主要负责接收、存储和转发消息,它提供了可靠的消息机制和灵活的消息路由,并支持消息集群和分布式部署,常用于应用解耦,耗时任务队列,流量削锋等场景。消息发送到没有队列绑定的交换机时,消息将丢失,因为,交换机没有存储消息的能力,消息只能存在在队列中。结果:根据key值进行处理。

weixin_62008675的博客 1326

1.4 欧拉集群安装RabbitMQ消息队列服务

本次实战在欧拉集群的主控节点Euler01上成功部署并配置了RabbitMQ消息队列服务。首先完成环境准备,确认主机名、IP、hosts映射及防火墙状态,并验证节点间网络互通。随后安装RabbitMQ服务并设置开机自启,启动后添加专用用户`rabbitmq`并赋予全权限,确保OpenStack组件间通信的基础支持。进一步演示了生产环境中的安全实践……

howard2005的专栏 1075

【重难点】【RabbitMQ 01】消息队列的作用、主流的消息队列、RabbitMQ 基于什么传输消息、RabbitMQ 模型架构、死信队列和延迟队列

【重难点】【RabbitMQ 01】消息队列的作用、主流的消息队列、RabbitMQ 基于什么传输消息、RabbitMQ 模型架构、死信队列和延迟队列

2022年毕业的萌新程序猿,输出一下自己的学习内容~ 2338
上一篇: 速通springcloud--05Seata
下一篇: RabbitMQ速通--02工作模式
sisyphoslee
博客等级 码龄7年 942粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值