消息中间件的选择:RabbitMQ是一个明智的选择

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


MQ(Message Queue)

MQ(消息队列)是一种用于在应用程序之间进行异步通信的技术;允许应用程序通过发送和接收消息来进行解耦和协同工作

消息生产者(Producer):负责创建和发送消息到消息队列中;它将消息发送到指定的队列或主题

消息队列(Message Queue):是消息的缓冲区,用于存储生产者发送的消息;消息队列可以采用不同的模式,如点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)模式

消息消费者(Consumer):负责从消息队列中接收和处理消息;消费者可以订阅一个队列或主题,并从中接收消息

在这里插入图片描述

RabbitMQ

在这里插入图片描述

RabbitMQ是一个开源的消息队列系统,它实现了高级消息队列协议(AMQP)标准;RabbitMQ提供了可靠的消息传递机制,使应用程序能够在分布式系统中进行可靠的异步通信

SpringAMQP

在这里插入图片描述

Spring AMQP是一个基于Spring框架的开源项目,用于简化使用AMQP(高级消息队列协议)的应用程序的开发;它提供了与AMQP兼容的消息传递的抽象和封装,使开发人员能够更轻松地使用消息队列系统,如RabbitMQ

  • 用于异步处理入站消息的侦听器容器
  • 用于发送和接收消息的RabbitTemplate
  • RabbitAdmin用于自动声明队列,交换和绑定
  • 消息(Message):在RabbitMQ中,消息是信息的载体,可以是任何形式的数据。它通常包含一个消息体和一些可选的属性;消息可以由生产者发布到交换机,然后由交换机路由到一个或多个队列中
  • 交换机(Exchange):交换机是消息的分发中心;它接收生产者发布的消息,并根据预定义的路由规则将消息路由到一个或多个队列中;RabbitMQ提供了几种类型的交换机,包括直连交换机(direct)、主题交换机(topic)、扇形交换机(fanout)和标头交换机(headers),以满足不同的消息路由需求
  • 队列(Queue):队列是消息的缓冲区,用于存储交换机发送过来的消息。消费者可以从队列中订阅并获取消息进行处理;RabbitMQ支持多个消费者同时订阅同一个队列,采用竞争消费模式
  • 绑定(Binding):绑定是交换机和队列之间的关联关系。它定义了消息从交换机路由到哪些队列中;绑定通常包括一个交换机名称、一个队列名称和一个路由键(Routing Key);路由键在直连交换机和主题交换机中起到关键作用,用于匹配消息和队列
  • 生产者(Producer):生产者是消息的发送者,它将消息发布到RabbitMQ的交换机中;生产者可以选择指定消息的交换机、路由键和其他属性
  • 消费者(Consumer):消费者是消息的接收者,它从队列中订阅并获取消息进行处理;消费者可以选择指定要消费的队列,并可以设置消息的确认机制、并发控制
  • 虚拟主机(Virtual Host):虚拟主机提供了逻辑上的隔离,允许在同一个RabbitMQ服务器上创建多个独立的消息代理;每个虚拟主机都有自己的交换机、队列和权限控制
  • 持久化(Durability):RabbitMQ支持将交换机和队列设置为持久化,以确保在服务器重启或崩溃后仍然存在;持久化的消息也可以在重启后恢复
  • 消息确认(Message Acknowledgment):消费者可以使用消息确认机制来确保消息被成功处理;一旦消费者确认接收到消息并完成处理,RabbitMQ将从队列中删除该消息;如果消费者在处理消息时发生错误,消息可以重新投递或进入死信队列
  • 高可用性和可扩展性:RabbitMQ支持集群部署,通过在多个节点上复制队列和交换机来提供高可用性和可扩展性;集群中的节点可以相互同步消息和状态,以实现负载均衡和故障转移

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 用父子组件通信实现页面页签功能

一、大概流程 二、用到的Vue3知识 1、组件通信 (1)父给子 在vue3中父组件给子组件传值用到绑定和props 因为页签的数组要放在父页面中, data(){return {tabs: []}}, 所以顶部栏需要向父页面获取页签数组 先在页签页面中定义props用来接…

CloudCompare——统计滤波

目录 1.统计滤波2.软件实现3.完整操作4.算法源码5.相关代码 本文由CSDN点云侠原创,CloudCompare——统计滤波,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 1.统计滤波 算法原理见:PCL 统计滤波器…

Cpp学习——类与对象3

目录 一,初始化列表 1.初始化列表的使用 2.初始化列表的特点 3.必须要使用初始化列表的场景 二,单参数构造函数的隐式类型转换 1.内置类型的隐式类型转换 2. 自定义类型的隐式类型转换 3.多参数构造函数的隐式类型转换 4.当你不想要发生隐式类型转换…

CPU缓存一致性原理

CPU缓存一致性原理 在本站的文章CPU缓存那些事儿中, 介绍了cpu的多级缓存的架构和cpu缓存行cache line的结构。CPU对于缓存的操作包含读和写,读操作在cache line中有所涉及,在本文中,将重点讨论CPU对于缓存进行写时的行为。 单核…

美国大模型风向速报(一)为何重视提示工程?LangChain+向量数据库+开源大模型真香...

多家,且独家来自美国的信源同时向“亲爱的数据”表示, 提示工程(Prompt Engineering)在美国大模型领域备受重视。 读者都要聊, 那就干活。 (一)开源真香 现阶段,AI开源极客大展身手&…

【视觉SLAM入门】5.2. 2D-3D PNP 3D-3D ICP BA非线性优化方法 数学方法SVD DLT

"养气之学,戒之躁急" 1. 3D-2D PNP1.1 代数法1.1.1 DLT(直接线性变换法)1.1.2. P3P 1.2 优化法BA (Bundle Adjustment)法 2. 3D-3D ICP2.1 代数法2.1.1 SVD方法 2.2 优化(BA)法2.2.2 非线性优化方法 前置事项: 1. 3D-2D PNP 该问题描述为&am…

线性代数的学习和整理7:各种特殊矩阵(草稿-----未完成)

目录 1 单位矩阵 为什么单位矩阵I是 [1,0;0,1]T 而不是[1,1;1,1]T 2 旋转矩阵 3 伸缩矩阵 放大缩小倍数矩阵 4 镜像矩阵 5 剪切矩阵 矩阵 行向量 列向量 方阵 1 单位矩阵 [ 1 0 0 1] 为什么单位矩阵I是 [1,0;0,1]T 而不是[1,1;1,1]T 因为 矩阵 [1,0;0,1] 代表…

websocket + stomp + sockjs学习

文章目录 学习链接后台代码引入依赖application.ymlWebSocketConfigPrivateControllerWebSocketService WebSocketEventListenerCorsFilter 前端代码Room.vue 学习链接 WebSocket入门教程示例代码,代码地址已fork至本地gitee,原github代码地址&#xff…

马哈鱼数据血缘工具背后的项目: gsp_demo_java 项目简单介绍与使用

0.背景 马哈鱼数据血缘工具(https://www.sqlflow.cn/)是SQLflow工具的中文译名,实际就是sqlflow. 对于SQL flow来说,底层调用的是General SQL Parser(GSP https://sqlparser.com) 的库. 这个gsp有开源的java demo项目:https://github.com/sqlparser/gsp_demo_java 1.快速使用…

【C# 基础精讲】LINQ 基础

LINQ(Language Integrated Query)是一项强大的C#语言特性,它使数据查询和操作变得更加简洁、灵活和可读性强。通过使用LINQ,您可以使用类似SQL的语法来查询各种数据源,如集合、数组、数据库等。本文将介绍LINQ的基础概…

(排序) 剑指 Offer 45. 把数组排成最小的数 ——【Leetcode每日一题】

❓ 剑指 Offer 45. 把数组排成最小的数 难度:中等 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459”…

PV3D: A 3D GENERATIVE MODEL FOR PORTRAITVIDEO GENERATION 【2023 ICLR】

ICLR:International Conference on Learning Representations CCF-A 国际表征学习大会:深度学习的顶级会议 生成对抗网络(GANs)的最新进展已经证明了生成令人惊叹的逼真肖像图像的能力。虽然之前的一些工作已经将这种图像gan应用于无条件的2D人像视频生…

[K8s]问题描述:k8s拉起来的容器少了cuda的so文件

问题解决:需要设置Runtimes:nvidia的同时设置Default Runtimenvidia

Java请求Http接口-OkHttp(超详细-附带工具类)

简介:OkHttp是一个默认有效的HTTP客户端,有效地执行HTTP可以加快您的负载并节省带宽,如果您的服务有多个IP地址,如果第一次连接失败,OkHttp将尝试备用地址。这对于IPv4 IPv6和冗余数据中心中托管的服务是必需的。OkHt…

Win11游戏高性能模式怎么开

1、点击桌面任务栏上的“开始”图标,在打开的应用中,点击“设置”; 2、“设置”窗口,左侧找到“游戏”选项,在右侧的选项中,找到并点击打开“游戏模式”; 3、打开的“游戏模式”中,找…

搭载KaihongOS的工业平板、机器人、无人机等产品通过3.2版本兼容性测评,持续繁荣OpenHarmony生态

近日,搭载深圳开鸿数字产业发展有限公司(简称“深开鸿”)KaihongOS软件发行版的工业平板、机器人、无人机等商用产品均通过OpenAtom OpenHarmony(以下简称“OpenHarmony”)3.2 Release版本兼容性测评,获颁O…

【Vue】yarn 安装包时权限不足或者文件夹被占用导致安装失败

在一个 Vue3 项目中,用 yarn 安装 Vue 插件或者 Vue-Router 时,出现同样的 error ,如下: An unexpected error occurred: “EPERM: operation not permitted, unlink ‘C:\Codefield\项目\yupao-frontend\node_modules\esbuild\w…

c#设计模式-结构型模式 之 代理模式

前言 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接 引用目标对象,代理对象作为访问对象和目标对象之间的中介。在学习代理模式的时候,可以去了解一下Aop切面编程AOP切面编程_aop编程…

python高级基础

文章目录 python高级基础闭包修饰器单例模式跟工厂模式工厂模式单例模式 多线程多进程创建websocket服务端手写客户端 python高级基础 闭包 简单解释一下闭包就是可以在内部访问外部函数的变量,因为如果声明全局变量,那在后面就有可能会修改 在闭包中的…

下载安装并使用小乌龟TortoiseGit

1、下载TortoiseGit安装包 官网:Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 2、小乌龟汉化包 在官网的下面就有官方提供的下载包 3、安装