异步通讯技术之RabbitMQ
前言:
📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年!
📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。
😇😇😇有兴趣的话关注博主一起学习,一起进步吧!
一、初识MQ
1.1 同步通讯
1.1.1同步通讯和异步通讯
1.1.2同步调用的问题
微服务间基于Feign的调用就属于同步方式,存在一些问题。
1.1.3同步调用存在的问题
1.2异步调用方案
异步调用常见实现就是事件驱动模式。
优势一:服务解耦
优势二:提升性能和吞吐量
优势三:服务没有强依赖,不担心联机失败
优势四:流量削峰填谷

劣势如下:
1.依赖于Broker的可靠性、安全性、吞吐能力(中间件出现问题导致程序无法运行)
2.架构复杂了,业务没有明显的流程线,不好追踪管理
1.3什么是MQ
MQ (MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。

二、RabbitMQ
2.1RabbitMQ概述
RabbitMQ是基于Erlang语言开发的开源消息通信中间件,官网地址:RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQ
2.2RabbitMQ的结构和概念





2.3常见消息模型

2.3.1HelloWorld案例
publisher:消息发布者,将消息发送到队列queue
queue:消息队列,负责接受并缓存消息
consumer:订阅队列,处理队列中的消息
2.3.1.1完成官方Demo中的hello world案例
实现步骤:
- 导入课前资料中的demo工程
- 运行publisher服务中的测试类PublisherTest中的测试方法testSendMessage()
- 查看RabbitMQ控制台的消息
- 启动consumer服务,查看是否能接收消息
基本消息队列的消息发送流程:
基本消息队列的消息接收流程:
三、SpringAMQP
3.1什么是SpringAMQP
相关文章:
异步通讯技术之RabbitMQ
前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! 一、初识MQ …...
tcp/ip协议2实现的插图,数据结构
(1)以上是插图第2章和3章 的 mbuf 与 ifnet 与 ifaddr 与 le_softc 与 sockaddr_dl结构体 (2) 以下是 二章mbuf的宏和函数和三章函数下 (3) 以下是 三章接口层的宏和函数上 (4)4 四章1:以太网接…...
Redis学习 - 了解Redis(三)
1. 什么是缓存击穿、缓存穿透、缓存雪崩? 1.1 缓存穿透问题 先来看一个常见的缓存使用方式:读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库…...
API接口自动化测试框架
前言 接口自动化逐渐成为各大公司投入产出最高的测试技术。但是如何在版本迅速迭代过程中提高接口自动化的测试效率,仍然是大部分公司需要解决的问题。 框架定位 数据驱动设计模式,无需写测试代码脚本即可实现自动化等价类非等价类覆盖, E2E…...
MySQL学习笔记1
任务背景: 将原来的数据库从原来的MySQL-5.5 升级到现在的MySQL-5.7,并保证数据完整。 1)不同版本MySQL的安装;yum glibc、源码安装,是企业100%要用到的。 2)MySQL数据库版本升级;(…...
基于PYQT5的GUI开发系列教程【一】框架安装和基础环境配置
目录 本文概述 作者介绍 一、安装相关的库 二、在Pycharm上添加外部工具QtDesigner和PyGUI 三、测试QtDesigner和P有GUI 尾言 本文概述 PYQT5是一个基于python的可视化GUI开发框架,具有容易上手,界面美观,多平台部署等优点,…...
【漏洞复现】Jeecg-Boot SQL注入漏洞(CVE-2023-34659)
漏洞描述 jeecgBoot是一款基于BPM的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发!JeecgBoot引领新低代码开发模式 OnlineCoding-> 代码生…...
【MySQL基础 | 中秋特辑】多表查询详细总结
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、多表…...
21天学会C++:Day14----模板
CSDN的uu们,大家好。这里是C入门的第十四讲。 座右铭:前路坎坷,披荆斩棘,扶摇直上。 博客主页: 姬如祎 收录专栏:C专题 目录 1. 知识引入 2. 模板的使用 2.1 函数模板 2.2 类模板 3. 模板声明和定义…...
MQ - 32 基础功能:消息查询的设计
文章目录 导图概述什么时候会用到消息查询消息队列支持查询的理论基础消息数据存储结构关于索引的一些知识点内核支持简单查询根据 Offset 查询数据根据时间戳查询数据根据消息 ID 查询数据借助第三方工具实现复杂查询第三方引擎支持查询工具化简单查询总结导图 概述 从功能上…...
c语言练习66:模拟实现offsetof
模拟实现offsetof #define offsetof(StructType, MemberName) (size_t)&(((StructType *)0)->MemberName) StructType是结构体类型名,MemberName是成员名。具体操作方法是: 1、先将0转换为一个结构体类型的指针,相当于某个结构体的首…...
数据库缓存服务器集群 redis集群
redis 提升数据库性能,缓解数据库压力 2.NoSql产品 产品: redis,mongodb,memcached 名词解释:非关系型数据库 以键值对的方式存储数据---(Key-Value)的形式 3.NoSql的优点 高可扩展性 分布式计算 低成本 架构的灵活性&…...
[密码学入门]仿射密码(Affine)
加密算法y(axb)mod N 解密算法x*(y-b)mod N(此处的为a关于N的乘法逆元,不是幂的概念) 如何求,涉及的知识挺多,还没想好怎么写,丢番图方程,贝祖定理(又译裴蜀定理),扩展欧…...
【Maven】SpringBoot多模块项目利用reversion占位符,进行版本管理.打包时版本号不能识别问题
问题原因: 多模块项目使用reversion点位符进行版管理,打包时生成的pom文件未将 {reversion}占位符替换为真实版本号。 而当子模块被依赖时,引入的pom文件中版本号是:{reversion}。而根据这个版本号去找相应父模块时肯定是找不到的…...
Vue watch实时计算器
watch实时计算器 可以自己选择、-、*、 参考代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.7.10/vue.js"></script>…...
Java中的super关键字
super 是Java中的一个关键字,它可以用来引用当前对象的父类(超类)的成员变量或方法。主要有以下用途: 访问父类的成员变量: 当子类和父类中有同名的成员变量时,可以使用super关键字来访问父类的成员变量。 …...
MySQL数据库入门到精通6--进阶篇(锁)
5. 锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决…...
js的继承
一、原型链继承 将父类的实例作为子类的原型 function Father(){this.name Tony }function Son() {}Son.prototype new Father()let son new Son();console.log(son.name) // Tony缺点: 父类所有的引用类型属性都会被所有子类共享,一个子类修改了属…...
HONEYWELLL 05701-A-0325 控制脉冲模块
运动控制: HONEYWELLL 05701-A-0325 控制脉冲模块可以用于运动控制应用,例如控制步进电机或伺服电机,以实现精确的位置和速度控制。 定位系统: 在自动化设备和机器人中,这些模块可以用于确定物体的位置和方向…...
Qt扩展-QCustomPlot 简介及配置
QCustomPlot 简介及配置 一、概述二、安装教程三、帮助文档的集成 一、概述 QCustomPlot是一个用于绘图和数据可视化的Qt 控件。它没有进一步的依赖关系,并且有良好的文档记录。这个绘图库专注于制作好看的、发布质量的2D绘图、图形和图表,以及为实时可…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
