java消息失败重发_JMS消息在JMS侦听器中重新发送异常

Javadoc为 org.springframework.jms.listener.AbstractMessageListenerContainer 表示,如果

“sessionAcknowledgeMode”设置为“CLIENT_ACKNOWLEDGE”:成功侦听器执行后自动确认消息;如果抛出异常,则无法重新发送 .

我猜,“在抛出异常的情况下没有重新传递”意味着,即使jms监听器中抛出异常,该消息也不会被重新传递(因此,我的猜测,它会得到确认) . 但是,从侦听器抛出的异常意味着对它的调用不成功,并且由于没有确认应该重新发送 .

问题是:

What actually should happen with message acknowledgement in case of exception thrown in the jms listener?

从这个堆栈跟踪中可以看到真正发生的事情:

at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:98)

at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:66)

at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:660)

at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:620)

at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:591)

at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:308)

at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:246)

at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1142)

at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1134)

at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1031)

堆栈跟踪的第5行是特别感兴趣的 . 那里的代码基本上意味着,(大多数情况下)从侦听器抛出的任何异常都将绕过在 org.springframework.jms.listener.AbstractMessageListenerContainer#commitIfNecessary 中完成的确认 .

That's ok, but what does "no redelivery in case of exception thrown" mean then?

附加信息:

spring JMS:4.1.2

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

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

相关文章

九年级数学解方程50道_初中数学公式中考知识点总结,初三数学上册,九年级数学上册...

初中数学公式中考知识点总结,初三数学上册,九年级数学上册第二十一章 一元二次方程知识点:一元二次方程的解法1、直接开平方法利用平方根的定义直接开平方求一元二次方程的解的方法叫做直接开平方法,2、配方法配方法是一种重要的数…

java时间规划书_【计算机本科补全计划】Java学习笔记(九) Java日期时间

正文之前终于好像仿佛看完了菜鸟教程的Java课程,感觉自己收获颇丰!很好,Java看完之后正愁如何开始进阶呢!结果发现菜鸟还准备了Java实例这种好东西!简直就是教程界的良心啊 !!!没事&…

与40mhz信道不兼容设置_为什么面包板不适合高频电路

01为什么在面包板上玩射频?方便,当然还是方便。面包板是进行一些电子线路实验构建电路方便的平台。多用于普通数字电路和模拟电路。一旦涉及到高频电路,面面包就有很多方面不太适合了。那么到底哪方面不适合?对于高频信号在面包板…

mysql 主表存hash和子表的名字_【mysql】mysql分表和表分区详解

为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性…

加载gif_搞笑gif:这啥情况啊?笑容加载不出来了?

这无故的小眼神,我也很无奈呀。。。猫和狗对峙,气势上一定不能输几个菜呀,喝成这样!这啥情况啊?笑容加载不出来了?高手在民间!小青年瞬间变老头!丈母娘来家了,说下班就能…

马匹赛跑java_java模拟龟兔赛跑

通过使用 java 中 Jlabel,Jbutton,JtextArea,JcomboBox 等 swing 组件来实现图形用户界面,同 时通过设置布局,背景,字体等来丰富界面,最大程度的模拟龟兔赛跑的场景......2、模拟龟兔赛跑 要求: 用图形用户界面实现。 能设置比赛时间,马匹的数量等等。...3、2 目标与总体方案(1…

排序千万级数据_MySQL 对于千万级的大表要怎么优化?我写了6000字的深度解读...

千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议。从一开始脑海里开始也是火光四现&…

java读取rvt文件数据_Revit二次开发之隐藏API 独立进程读取rvt文件

在项目中需要读取rvt文件,但是因为该格式为非公开格式,其数据需要revit的支持,但批量读取不可能一个一个用revit软件去打开。不过该方法还是需要revit的依赖,速度比开软件快了知道多少1.1. 新建一个控制台项目1.2. 添加Revit API引…

vscode自动加前缀_详解VScode自动补全CSS3前缀插件以及配置无效的解决办法

1.在vscode中搜索Autoprofixer2.在安装完成之后要配置在需要添加前缀的css文件上,右键点击命令面板,输入Autoprefixer CSS就好啦ps: 如果想要兼容性最好的话,需要在设置配置文件setting.json里加上(打开设置->搜索autoprefixer->点击在…

java类快速构造_程序员有什么办法能快速梳理java知识点?有这八张图就够了

一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选。如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。1、字符串不变性下面这张图展示了这段代码做了什么String s "abcd";s s.concat(&quo…

php数组foreach循环添加键值对_循环 - PHP二维数组根据键值对获取一组数组 (不使用foreach)...

问 题$user array(0 > array(id > 1,name > 张三,email > zhangsansina.com,),1 > array(id > 2,name > 李四,email > lisi163.com,),2 > array(id > 5,name > 王五,email > 10000qq.com,),......);比如我想获取当id2时,该数组的全部内容…

uos配置 java 环境变量_CentOS 7.3 环境配置java和tomcat开机启动

Centos7下添加开机自启动服务和脚本 https://blog.csdn.net/GMingZhou/article/details/78677953安装部分参考我的博文,仅参考他的开机启动部分CentOS 7环境配置tomcat7开机启动 https://blog.csdn.net/tiantang_1986/article/details/537049661.安装 jdk-8u5-lin…

react全局方法_前端面试题 ---react

高阶组件相关什么是高阶组件,它有哪些运用?高阶组件就是一个函数,接收一个组件,经过处理后返回后的新的组件;高阶组件,不是真正意义上的组件,其实是一种模式;可以对逻辑代码进行抽离…

java数据库表不存在_如果Java生产代码中不存在并在JUnit中确认,则创建数据库表...

Code-Apprentice2javasqljunitjdbc我正在用Java编写数据库程序,并且想要创建一个表(如果它还不存在).我从中了解DatabaseMetaData.getTables()了如何在Java中检测SQL表的存在?而我正在尝试使用它:private boolean tableExists() throws SQLException {System.out.pr…

get方法请求返回一个文件_一键转换多种文件格式,完全免费,总有一个方法适合你...

相信各位小伙伴平时办公的时候,肯定经常需要对多种文件格式进行转换,但是下面这些非常好用的转换方法,你用过吗?接下来就带各位一探究竟,希望可以帮到你哦!一、迅捷PDF转换器在线版1、文档转换首先我们可以…

java 堆排序方式_幾種排序方式的java實現(02:希爾排序,歸並排序,堆排序)

/** 希爾排序:先取一個小於n的整數d1作為第一個增量,* 把文件的全部記錄分成(n除以d1)個組。所有距離為d1的倍數的記錄放在同一個組中。* 先在各組內進行直接插入排序;然后,取第二個增量d2* 直至所取的增量dt1(dtpublic classShel…

jacoco入门_Android jacoco 代码覆盖率测试入门

前言最近同事搞了一个基于 jacoco 统计 Android 代码覆盖率测试的功能,可以统计每天手工测试的代码覆盖率.抱着好奇的心态,自己也学习一下 jacoco,陆陆续续搞了三天终于有点结果了.本文介绍仅仅在源码中加入少量代码就可以完成代码覆盖率覆测试.代码配置build.gradle在 app 目录…

java下文_java实现文件下载的两种方式

本文实例为大家分享了java实现文件下载的具体代码,供大家参考,具体内容如下public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件的路径。File file new File(path);// 取得文件名。String …

uinty粒子系统子物体变大_Unity的粒子系统(一)基础篇

简介闲来无事,仔细的学习一下粒子系统,也当是给自己做个笔记方便之后进行回顾。引擎版本:Unity2018.3创建一个ParticleSystem创建方式:1、Hierarchy-->Effects-->ParticleSystem第一种创建方式创建结果2、gameObject-->A…

java字符串string_Java字符串String方法总结

Java字符串创建与初始化实例。Java字符串String方法总结,包括字符串的大小写替转换,获取字符串长度的方法、截取字符串,去除字符串中的空格、StringBuffer类转换成String类等:java创建并初始化字符串的方法:1、使用字符…