6.24_JAVA_微服务day07_RabbitMQ高级

1、

    @RabbitListener(queuesToDeclare/*此处是固定写法,只能写这个玩意儿,因为这里是库里的方法*/ = @Queue(name = "lazy.queue",//如果不存在就创建lazy.queue队列durable = "true",//把耐用打开arguments = @Argument(name = "x-queue-mode", value = "lazy")//把lazy模式打开,至于为什么是"x-queue-mode",这个"x-queue-mode"纯粹是Spring底层就这么写的,你想调用这个方法(注解)只能这样调用。学代码最重要的就是会用,别去管为什么,会用就行。别造轮子,别把这些API当成算法的学,入门最重要。入了门有的是把这些API当成算法来学的机会。))public void listenLazyQueue(String msg){log.info("接收到 lazy.queue的消息:{}", msg);}

2、消费者确认机制(Consumer Acknowledgement):如何确保没得到确认的消息不被RMQ删除呢?

        S1 、改成auto

spring:rabbitmq:listener:simple:acknowledge-mode: auto # 自动ack

        S2、throw new RuntimeException,而不扔MessageConversionException

    @RabbitListener(queues = "simple.queue")public void listenSimpleQueueMessage(String msg) throws InterruptedException {log.info("spring 消费者接收到消息:【" + msg + "】");if (true) {throw new RuntimeException("故意的");}log.info("消息处理完成");}

3、失败重试机制:防止消费者接收不到之后,无限投递

        S1修改consumer的yaml

spring:rabbitmq:listener:simple:retry:enabled: true # 开启消费者失败重试initial-interval: 1000ms # 初识的失败等待时长为1秒multiplier: 1 # 失败的等待时长倍数,下次等待时长 = multiplier * last-intervalmax-attempts: 3 # 最大重试次数stateless: true # true无状态;false有状态。如果业务中包含事务,这里改为false

4、导入这些Queue、Exchange这种东西的包,会让你选很多包。选amqp(spring-boot-starter-amqp)那个包。且带核心的那个包。因为这玩意儿的依赖是这个:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

 所以选这个:

5、RoutingKey是个啥?是消息从交换机路由到队列的关键规则。注意:error是自己定义的名字,你完全可以叫它其他名,比如my.error等

6、 唯一消息ID是啥?用于判断是否只执行一次,防止重复。

       唯一ID用在哪?比如订单之类的。

7、

订单、付款这种处理钱的时候,尽量放到同一个方法里。 防止极小概率的线程安全问题。

8、延迟消息:应用如:15分钟内付款。在代码层面就是:要给你取消订单,但是你不15分钟之内才给你取消。 

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

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

相关文章

Python打卡:Day38

知识点回顾&#xff1a; Dataset类的__getitem__和__len__方法&#xff08;本质是python的特殊方法&#xff09;Dataloader类minist手写数据集的了解 浙大疏锦行

质量管理五大核心工具之SPC

SPC&#xff08;Statistical Process Control&#xff0c;统计过程控制&#xff09;是一种基于统计学的质量控制方法&#xff0c;旨在通过监控和分析生产过程数据&#xff0c;识别异常波动并消除异常因素&#xff0c;从而确保过程稳定受控&#xff0c;提升产品质量一致性145。以…

【世纪龙科技】新能源汽车VR虚拟体验展示馆-解锁认知新维度

解锁新能源汽车深度认知新维度&#xff1a;沉浸式 VR 虚拟体验展示馆 在科技不断突破边界的当下&#xff0c;人们对新能源汽车的探索渴望愈发强烈。无论是希望深入了解行业发展脉络的求知者&#xff0c;还是想要直观掌握汽车技术原理的学习者&#xff0c;传统的展示方式似乎总…

oracle基础审计管理

Oracle数据库审计功能详解(简单易懂!) 更新时间&#xff1a;2024年01月30日 16:21:27 作者&#xff1a;前程的前程也迷茫 Oracle审计查询是一项重要的任务,可以帮助DBA更好的管理Oracle数据库,下面这篇文章主要给大家介绍了关于Oracle数据库审计功能的相关资料,文中通过代码介绍…

Day44 预训练模型

目录 一、预训练的概念 二、常见的分类预训练模型 2.1 CNN架构预训练模型 2.2 Transformer类预训练模型 2.3 自监督预训练模型 三、图像预训练模型的发展史 四、预训练的策略 五、预训练代码实战&#xff1a;resnet18 六、尝试在cifar10对比alexnet 七、尝试通过ctrl进…

寻找两个正序数组的中位数:二分查找的终极算法

引言&#xff1a;中位数的「C位之争」 如果把数组比作排队买奶茶的队伍&#xff0c;中位数就是那个站在正中间的幸运儿——不需要知道所有人的位置&#xff0c;只需要找到那个「刚刚好」的中间位置。这个问题看似简单&#xff0c;却藏着算法世界的「效率密码」&#xff0c;尤其…

使用tensorflow的线性回归的例子(一)

拟合y2x1 import matplotlib.pyplot as plt import numpy as np import tensorflow as tf print(tf.__version__) %matplotlib inline #载入随机种子 np.random.seed(5) #生成100个等差序列&#xff0c;每个值在-1 - 1 之间 x_data np.linspace(-1,1,100) #y 2x …

OpenLayers 渲染之矢量影像图层

前言 :::block-1 对于像GeoJSON、KML等地理数据格式的文件&#xff0c;最常用的方法都是通过VectorLayer进行渲染。除此之外&#xff0c;还可以使用VectorImage&#xff08;矢量影像图层&#xff09;进行渲染。本文主要介绍在客户端拖动上传GeoJSON、KML等文件&#xff0c;并采…

Feign 实战指南:从 REST 替代到性能优化与最佳实践

Feign 实战指南&#xff1a;从 REST 替代到性能优化与最佳实践 一 . Feign 替代 RestTemplate1.1 RestTemplate 方式调用存在的问题1.2 Feign 的介绍1.3 定义和使用 Feign 客户端1.3.1 引入依赖1.3.2 添加注解1.3.3 编写 Feign 的客户端进行接口声明1.3.4 测试小结 1.4 通过 PO…

什么是国际期货?期货交易平台搭建

国际期货&#xff08;International Futures&#xff09;&#xff0c;又称外盘期货或全球期货&#xff0c;是指在中国大陆以外的交易所进行标准化合约交易的金融衍生品市场。其核心特征、功能及与国内期货的区别如下&#xff1a; &#x1f4cd; 一、定义与核心特征 全球化交易…

考取华为HCIE-AI有什么用?

在人工智能技术重塑各行各业的浪潮中&#xff0c;掌握核心AI能力成为专业人士的制胜关键。华为推出的HCIE-AI Solution Architect&#xff08;华为认证ICT专家-AI解决方案架构师&#xff09;&#xff0c;正是面向这一领域顶尖人才设立的最高级别认证。主要是为了培养和认证掌握…

Maven 使用说明和配置

作者&#xff1a;小凯 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; 一、前言 Apache Maven (opens new window)是一个软件项目管理、构建和依赖工具。基于项目对象模型 (POM) 的概念&#xff0c;Maven 可以通过中央信息来管理项目的构建、…

【Docker管理工具】安装Docker容器自动更新工具Watchtower

【Docker管理工具】安装Docker容器自动更新工具Watchtower 一、Watchtower介绍1.1 Watchtower简介1.2 Watchtower使用注意1.3 Watchtower使用场景1.4 Docker容器介绍 二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版…

AI优化SEO关键词精进

内容概要 随着人工智能技术的飞速发展&#xff0c;其在搜索引擎优化&#xff08;SEO&#xff09;领域的应用正引发深刻变革。本文将系统探讨AI如何革新传统的关键词优化策略&#xff0c;通过更智能的分析与匹配方法&#xff0c;显著提升内容在搜索结果中的可见度与排名。核心议…

canvas面试题200道

下面是一份 200 条关于 HTML5 Canvas 的面试题合集,适用于前端开发岗位的中高级工程师面试准备。内容涵盖基础概念、绘图操作、性能优化、动画实现、安全机制等多个方面,并附有参考答案或解析建议。 🧠 一、Canvas 基础知识(1-40) 1. 什么是 HTML5 Canvas? <canvas&…

Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定(325)

Java 大视界 -- Java 大数据在智能安防视频监控系统中的目标轨迹预测与防范策略制定&#xff08;325&#xff09; 引言&#xff1a;正文&#xff1a;一、Java 驱动的安防视频数据采集与预处理架构1.1 多路异构视频流合规接入层&#xff08;GB/T 28181-2021 全协议适配&#xff…

【Python】实现对LGBT+ rights worldwide (2025)数据集的可视化展示

我用夸克网盘分享了「lgbtq_rights_by_country数据集」&#xff0c;点击链接即可保存。 链接&#xff1a;https://pan.quark.cn/s/aa0fa91491e8 摘要&#xff1a; 本文运用Python编程实现对LGBTQ权利相关数据的处理与可视化展示。通过直方图与地图两种可视化方式&#xff0c;分…

车载通信架构 --- ECU刷写与busoff原则

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

【windows处理技巧】如何缩小PDF

原因&#xff1a;近日输出的PDF太大&#xff0c;渲染需要较多的时间&#xff0c;所以需要缩小一下PDF。 操作工具&#xff1a;adobe acrobat pro 方法&#xff1a;导入--另存为--缩减 初始&#xff1a; 压缩后

OpenCV图像添加水印

一、前言 在数字图像处理中&#xff0c;为图片添加水印是一项常见且重要的技术。无论是版权保护、品牌宣传还是防止未经授权的使用&#xff0c;水印都能发挥重要作用。OpenCV作为一款强大的计算机视觉库&#xff0c;提供了丰富的功能来实现各种水印效果。本教程将详细介绍如何…