目录

1. 基本概念

2. RabbitMq 的工作流程

3. 协议

4. 简单的生产者, 消费者模型

4.1 我们先引入 rabbitmq 的依赖

4.2 生产者

4.3 消费者


1. 基本概念

  • Pruducer : 生产者, 产生消息
  • Consumer : 消费者, 消费消息
  • Broker : RabbitMq Server, 用来接收和发送消息
  • Connection : 是客户端和服务端的 tcp 连接, 负责传输客户端和服务端之间的所有数据和控制信息
  • Channel : 通道, 一个 Connection 可以有多个通道, 主要作用是将消息的读写操作复用到同一个 tcp 连接上, 这样可以减少建立和关闭连接的开销, 提高性能
  • Exchange : 交换机, 将消息路由到对应的 Queue
  • Queue : 队列, RabbitMq 中用来存放消息的内部对象
  • BindingKEy (PoutingKey) :  生产者在发送消息时, 会发送一个 BindingKey, 用来匹配交换机, 交换机与队列之间的绑定也是通过 BindingKey 实现的, 一个交换机可以绑定多个队列, 统一交换机可以与不同的队列进行绑定, 使用的 BindingKey 是不同的
  • Virtual host : 虚拟主机, 为消息队列提供了逻辑上的隔离机制 

2. RabbitMq 的工作流程

  1. Producer 生产了一条消息
  2. Producer 连接到 RabbitMq Broker, 建立一个连接(Connection), 开启一个信道(Channel)
  3. Producer 声明一个交换机(Exchange), 路由信息
  4. Producer 声明一个队列(Queue), 存放信息
  5. Producer 发送消息至 RabbitMq Broker
  6. RabbitMq Broker 接收消息, 并存入响应的队列(Queue)中, 如果未找到相对应的队列, 则根据生产者的配置, 选择丢弃或者回退给生产者

3. 协议

  • 使用 AMQP 协议, 是一种高级消息队列协议, AMQP 定义了一套确定的消息交换功能, 包括交换器(Exchange), 队列(Queue)等. 这些组件共同工作, 使得生产者能够将消息发送到交换器. 然后由队列接收并等待消费者接收. AMQP还定义了一个网络协议, 允许客户端应用通过该协议与消息代理和 AMQP 模型进行交互通信

4. 简单的生产者, 消费者模型

4.1 我们先引入 rabbitmq 的依赖

4.2 生产者

4.3 消费者

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

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

相关文章

Redis(46) 如何搭建Redis哨兵?

搭建 Redis 哨兵(Sentinel)集群,确保 Redis 服务具有高可用性。以下是详细的步骤,从 Redis 安装、配置主从复制到配置和启动 Sentinel 集群,并结合相关的代码示例。 步骤 1:安装 Redis 首先,需要…

Grafana 多指标相乘

PromQL中多指标相乘 PromQL表达式: 0.045 * h9_daily_income{coin"nock"} * h9_pool_price_cny{coin"nock"}📈 基础:单指标运算 常数与指标相乘 在PromQL中,常数与指标的乘法是最简单的运算: # ✅…

【微服务】springboot3 集成 Flink CDC 1.17 实现mysql数据同步

目录 一、前言 二、常用的数据同步解决方案 2.1 为什么需要数据同步 2.2 常用的数据同步方案 2.2.1 Debezium 2.2.2 DataX 2.2.3 Canal 2.2.4 Sqoop 2.2.5 Kettle 2.2.6 Flink CDC 三、Flink CDC介绍 3.1 Flink CDC 概述 3.1.1 Flink CDC 工作原理 3.2 Flink CDC…

分布式数据架构

分布式数据架构是一种将数据分散存储在多台独立计算机(节点)上,并通过网络协调工作的系统设计。其核心目标是解决海量数据处理、高并发访问、高可用性及可扩展性等传统集中式数据库难以应对的挑战。以下是关键要点解析:一、核心原…

Spark 中spark.implicits._ 中的 toDF和DataFrame 类本身的 toDF 方法

1. spark.implicits._ 中的 toDF(隐式转换方法)本质这是一个隐式转换(implicit conversion),通过 import spark.implicits._ 被引入到作用域中。它的作用是为本地 Scala 集合(如 Seq, List, Array 等&#…

如何在MacOS上卸载并且重新安装Homebrew

Homebrew是一款针对macOS操作系统的包管理工具,它允许用户通过命令行界面轻松安装、升级和管理各种开源软件包和工具。Homebrew是一个非常流行的工具,用于简化macOS系统上的软件安装和管理过程。一、卸载 Homebrew方法1:官方卸载脚本&#xf…

如何简单理解状态机、流程图和时序图

状态机、流程图和时序图都是软件工程中用来描述系统行为的工具,但它们像不同的“眼镜”一样,帮助我们从不同角度看问题。下面用生活比喻来简单理解思路:状态机:想象一个交通信号灯。它总是在“红灯”“黄灯”“绿灯”这些状态之间…

消失的6个月!

已经6个月没有更新了 四个月的研一下生活 两个月暑假,哈哈,其实也没闲着。每天都有好好的学习,每天学习时长6h 暑假按照导师的指示开始搞项目了,项目是关于RAG那块中的应用场景,简单来说就是deepseek puls ,使用大…

Android开发——初步学习Activity:什么是Activity

Android开发——初步学习Activity:什么是Activity ​ 在 Android 中,Activity 是一个用于展示用户界面的组件。每个 Activity 通常对应应用中的一个屏幕,例如主界面、设置界面或详情页。Activity 负责处理用户的输入事件,更新 UI&…

【左程云算法03】对数器算法和数据结构大致分类

目录 对数器的实现 代码实现与解析 1. 随机样本生成器 (randomArray) 2. 核心驱动逻辑 (main 方法) 3. 辅助函数 (copyArray 和 sameArray) 对数器的威力 算法和数据结构简介​编辑 1. 硬计算类算法 (Hard Computing) 2. 软计算类算法 (Soft Computing) 核心观点 一个…

MATLAB | 绘图复刻(二十三)| Nature同款雷达图

Hello 真的好久不见,这期画一个Nature同款雷达图,原图是下图中的i图,长这样: 本图出自: Pan, X., Li, X., Dong, L. et al. Tumour vasculature at single-cell resolution. Nature 632, 429–436 (2024). https://d…

React Hooks UseCallback

开发环境:React Native Taro TypescriptuseCallback的用途,主要用于性能优化:1 避免不必要的子组件重渲染:当父组件重渲染时,如果传递给子组件的函数每次都是新创建的,即使子组件使用了 React.memo&#…

使用SD为VFX制作贴图

1.制作遮罩 Gradient Linear 1 通过Blend 可以混合出不同遮罩 2.径向渐变 Shape 节点 , 非常常用 色阶调节灰度和渐变过渡 曲线能更细致调节灰度 色阶还可以反向 和圆盘混合 就是 菲涅尔Fresnel 3. 屏幕后处理渐变 第二种方法 4. 极坐标 Gradient Circular Threshold 阈值节…

面经分享二:Kafka、RabbitMQ 、RocketMQ 这三中消息中间件实现原理、区别与适用场景

一、实现原理 (Implementation Principle) 1. Apache Kafka:分布式提交日志 (Distributed Commit Log) Kafka 的核心设计理念是作为一个分布式、高吞吐量的提交日志系统。它不追求消息的复杂路由,而是追求数据的快速、持久化流动。 存储结构:…

Android开发——初步了解AndroidManifest.xml

Android开发——初步了解AndroidManifest.xml ​ AndroidManifest.xml 是 Android 应用的清单文件,包含了应用的包名、组件声明、权限声明、API 版本信息等。它是 Android 应用的“说明书”,系统通过它了解应用的结构和行为。咱们的AndroidManifest文件实…

ecplise配置maven插件

1.下载maven 2.配置系统变量 MAVEN_HOME: E:\CODE\MAVEN\apache-maven-3.0.4 3.配置环境变量 %MAVEN_HOME%\bin 4.cmd:mvn -version 注1 如图所示为:成功 注1:配置成功的前提是要有配置JAVA_HOME,如果没有配置,则…

Vue 项目性能优化实战

性能优化有一套「发现 → 定位 → 解决」的闭环方法论。本文以真实项目为蓝本,从编码阶段到上线监控,给出一条可落地的 Vue 性能优化路线图。 一、量化指标定位性能瓶颈 任何优化之前先用量化证据锁死问题。 Lighthouse 一键跑分:首屏、交互、…

阿里云智能多模态大模型岗三面面经

阿里云智能多模态大模型岗三面面经(详细问题感受) 最近面试了 阿里云智能集团 - 多模态大模型岗位,三轮技术面,整体体验还不错。问题整体偏常规,但对项目的追问比较细致。这里整理一下完整面经,供准备类似岗…

C++ 条件变量 通知 cv.notify_all() 先释放锁再通知

简短的回答是:先释放锁,再通知(notify_one 或 notify_all)通常是更优的选择。 虽然标准允许两种顺序,但“先解锁,后通知”的性能通常更好。 下面我们来详细解释原因和两种方式的区别。 先通知,后…

案例精选 | 南京交通职业技术学院安全运营服务建设标杆

导语 随着教育信息化的深入推进,高校已成为数字化转型的前沿阵地。然而,伴随着教学、科研、管理等业务系统的全面上云与互联互通,高校网络环境日益复杂,面临的网络安全威胁也愈发严峻。勒索病毒、数据泄露、APT攻击等安全事件频发…