springboot rabbitmq属性配置spring.rabbitmq.publisher-confirm和spring.rabbitmq.publisher-confirm-type详解

2023-10-27

springboot.rabbitmq.publisher-confirm 新版本已被弃用,现在使用 spring.rabbitmq.publisher-confirm-type = correlated 实现相同效果

在springboot2.2.0.RELEASE版本之前是amqp正式支持的属性,用来配置消息发送到交换器之后是否触发回调方法,在2.2.0及之后该属性过期使用spring.rabbitmq.publisher-confirm-type属性配置代替,用来配置更多的确认类型;

1.spring.rabbitmq.publisher-confirm发布确认属性配置

如果该属性为true,则会触发以下方法:

        /**
         * 设置生产者消息publish-confirm回调函数
         */
        rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
            if(!ack){
                LoggerUtil.error(RabbitConfig.class, StringUtils.join("publishConfirm消息发送到交换器被退回,Id:", correlationData.getId(), ";退回原因是:", cause));
            } else {
                LoggerUtil.info(RabbitConfig.class, "发送消息到交换器成功,MessageId:"+correlationData.getId());
            }
        });

2.spring.rabbitmq.publisher-confirm-type新版发布确认属性有三种确认类型

	/**
	 * The type of publisher confirms to use.
	 */
	public enum ConfirmType {

		/**
		 * Use {@code RabbitTemplate#waitForConfirms()} (or {@code waitForConfirmsOrDie()}
		 * within scoped operations.
		 */
		SIMPLE,

		/**
		 * Use with {@code CorrelationData} to correlate confirmations with sent
		 * messsages.
		 */
		CORRELATED,

		/**
		 * Publisher confirms are disabled (default).
		 */
		NONE

	}

 

  • NONE值是禁用发布确认模式,是默认值
  • CORRELATED值是发布消息成功到交换器后会触发回调方法,如1示例
  • SIMPLE值经测试有两种效果,其一效果和CORRELATED值一样会触发回调方法,其二在发布消息成功后使用rabbitTemplate调用waitForConfirms或waitForConfirmsOrDie方法等待broker节点返回发送结果,根据返回结果来判定下一步的逻辑,要注意的点是waitForConfirmsOrDie方法如果返回false则会关闭channel,则接下来无法发送消息到broker;

GitHub地址:https://github.com/mingyang66/spring-parent/tree/master/doc/rabbitmq

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot rabbitmq属性配置spring.rabbitmq.publisher-confirm和spring.rabbitmq.publisher-confirm-type详解 的相关文章

  • linux下使用crontab定时器,并且设置定时不执行的情况,附:项目启动遇到的一些问题和命令

    打开终端 以root用户身份登录 运行以下命令打开cron任务编辑器 crontab e 如果首次编辑cron任务 会提示选择编辑器 选择你熟悉的编辑器 比如nano或vi 并打开相应的配置文件 在编辑器中 添加一行类似以下的命令来设置定时
  • 软测入门(一)测试理念及基础知识

    软测入门理念 软件的分类 按层次划分 系统软件 应用软件 按组织划分 商业软件 开源软件 按结构划分 单机软件 软件缺陷 由来 Grace Hopper发明Cobol计算机语言 也是找出电脑程序中第一个bug的女程序员 Bug Defect
  • 上传源码到GitHub代码托管平台方法和步骤

    上传源码到GitHub的方法步骤 要在本地上传代码到GitHub第一步就是先在本地有git版本控制软件 或者你的IDE集成了git 否则一切都是徒劳 1 先下载git 地址 https git scm com downloads 2 安装G
  • 【漏洞复现】CVE-2021-45232 Apache-apisix-dashboard

    靶场搭建 修改版本号 启动环境 查看端口号为9090 用主机登录ip 9000 默认用户名 admin 默认密码 admin 点击 路由 进入路由页面 打开POC所在文件夹 cmd执行 刷新路由页面 查看路由配置 成功注入恶意 script
  • Oracle各种进程功能一览表

    在安装Oracle数据库的时候 我检查进程 发现了以下进程 功能如下 Ora pmon 是进程监视器 Process Monitor 的缩写 当取消当前的事务 或者释放进程占用的锁以及其它资源的时候 这个进程清空那些失败的进程 Ora vk
  • 谷歌Chrome小恐龙代码(自动跳,高跳,无敌,加速)

    目录 自动跳代码 无敌代码 高跳代码 可以改括号内参数 疾跑代码 可以改括号内参数 大多数浏览器都有自己的彩蛋 而今天我们分享的是谷歌Chrome 谷歌小恐龙游戏是一个浏览器自带的小游戏 断网联网状态都是可以玩的 那么如何在联网的状态下进行
  • Flask 增删改查

    基本操作 目录 基本操作 添加 查看数据 分页 详情 删除 修改 路由配置 创建模型类models from app extensions import db class Books db Model tablename tb books
  • Feign远程调用丢失请求头问题

    在业务中 需要使用A B两个模块 这些模块使用了SpringSession共享Session数据 在B模块中的业务需要用户登录后才能操作 当A调用B的业务时 在B模块中获取不到用户的Session信息 导致B模块判定该请求用户没有登录导致A
  • java基础错题总结

    1 解析 首先乘法的优先级高于加法 所以先进行y z 然后在这里 是连接符 因为头一个是字符串所以系统就认为是连接符 就成 10202 0 输出这个字符串 但如果第一个不是字符串类型的 就像 10 20 a 这个会输出 30 a 2 解析
  • gis中的加权求和工具在哪里_因果推理初探(5)——干预工具(上)

    本节将延续上一节学习的干预的有关概念 开始深入介绍几种干预的工具 后门调整 前门调整 逆概率加权等 本节将有大量公式来袭 请准备草稿纸或提前绕道 在上一节最后 我们推导出有关干预的重要公式 调整公式 它的形式如下 这个公式让我们可以通过观测
  • 为什么使用代理后不能上网了?

    在使用完代理服务器之后 有的用户可能会遇到这样的问题 明明网络正常 为什么我的浏览器不能打开网页了 今天就给大家说下具体解决方法 这里我们以IE浏览器为例 1 先打开浏览器 点击右上角的 工具 图标 然后点击下拉中的 Internet选项
  • elasticsearch中文分词器插件elasticsearch-analysis-ik远程自定义词典热更新

    IK简介 IK分词器基于词库进行分词 analysis ik内置了一些词典 主词典main dic 姓氏词典surname dic 量词词典quantifier dic 后缀词典suffix dic 介词词典preposition dic
  • vue项目创建

    默认3 默认2 自定义配置 js语法编辑器 ts 渐进式web应用程序 路由 状态管理器 css处理器 代码检查 单元测试 端对端测试 选择版本 路由是否选择历史模式 选择css预处理器 配置放在哪里 保存这个项目作为一个模版使用 npm

随机推荐