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

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

  1. java从外部得到数据_java – 如何实现Observer以从侦听器获取数据?

    我正在使用 MaterialDrawer库为我的应用程序创建一个简单的抽屉,库中的一些类实例需要在调用时传递给它们的字符串.一个例子是IProfile类: IProfile profile = new ...

  2. 方法~作用于对象~失败_消息三:ActiveMQ Topic 消息失败重发

    3.1 JMS消息确认机制 在 Session 接口中定义的几个常量: AUTO_ACKNOWLEDGE = 1 自动确认 CLIENT_ACKNOWLEDGE = 2 客户端手动确认 DUPS_OK ...

  3. java 拦截鼠标消息 循环_java – 由子组件拦截的swing鼠标侦听器

    例如 import java.awt.Component; import java.awt.Dimension; import java.awt.event.MouseAdapter; import ...

  4. linux下netty接收不到服务,Netty 发送消息失败或者接收消息失败的可能原因

    Conditional Split component 用法 Conditional Split 用于将数据流按照条件进行拆分,每一个output 都有name和condition. 数据流逐行按照c ...

  5. 采用sendmsg发送消息失败 recvmsg接收消息失败

    这是因为msg中的msg_control可能指向垃圾内存,解决办法就是将msg中的内存置零.

  6. JAVA查找事件侦听代码_Java自定义事件处理程序和侦听器

    我目前正在使用Socket.io的 Java实现,可在此处获取: netty-socketio 我已经启动并运行了服务器,它在客户端和服务器之间很好地接收/发送消息,但是我需要在接收到某些消息时触发事 ...

  7. Java事件侦听器函数_SWT 计算器 按钮事件监听 获取按钮text值

    用swt插件做计算器,监听所有按钮.通过按钮text值判断哪个按钮被点击,如"0"按钮被点击,就在text框里加个0.现在问题是怎样在监听函数里得到button的text值.10个 ...

  8. JAVA单选组监听_java – 如何将侦听器附加到单选按钮

    我有一个显示各种radiobutton的活动.无线电按钮分组在无线电组中.我希望在检查某个单选按钮时,一些radiobutton会消失.例如,当检查事故按钮时,摔倒,绊倒和疾病的无线电按钮消失.我怎么 ...

  9. RabbitMQ –使用Spring集成Java DSL串行处理消息

    如果您曾经需要使用RabbitMQ来串行处理消息,并且有一群监听器来处理消息,那么我所看到的最好方法是在监听器上使用"独占消费者"标志,每个监听器上有1个线程来处理消息. 专用使用 ...

最新文章

  1. 【Redis】缓存的三大问题及其解决方案
  2. Spring 开启Annotation context:annotation-config 和 context:component-scan诠释及区别
  3. [转]获取xml节点值和属性值(兼容ie和firefox)
  4. Python的from import和import的区别?
  5. bzoj 1079 [SCOI2008]着色方案
  6. java读取配置文件properties
  7. C库函数 - strcspn()
  8. php rest api lumen,lumen Rest API 起步
  9. 【实践】基于强化学习的 Contextual Bandits 算法在推荐场景中的应用
  10. 搞机器学习还敲什么代码
  11. 关于Exchange Server 2010(WEB浏览证书)证书问题
  12. PHP--变量部分知识点
  13. 黑马程序员传智播客 正则表达式学习笔记 匹配单个字符多个字符
  14. 冰蝎工具的最新检测特征
  15. 用HTML写一个会员注册、登录界面
  16. 邮箱163登录入口,邮箱163如何注册?
  17. 如果应用闪退,怎么获取相关日志?
  18. 中国建设银行信息技术岗笔试
  19. ❤️❤️马上安排!闺女想在游戏里成为【超人】,Python游戏开发模块Pygame系列之【跳跃的小球】❤️❤️源码
  20. javascript如何获取request中的数据

热门文章

  1. c++opencv显示中文_OpenCV如何入门秘籍
  2. linux 改变文件夹属性,技术|在Linux中用chattr和lsattr命令管理文件和目录属性
  3. 2 s锁是什么_《演员请就位》:一场戏拿了2张S卡,任敏凭什么打败老戏骨?
  4. 为什么用pyqt的不多_现在农村提倡用天然气和清洁煤球取暖,为何农民不爱用?看完懂了...
  5. 如何用unit test测试controller_如何用电缆故障测试仪冲闪测试确定故障点?
  6. Mybatis源码分析之(七)Mybatis一级缓存和二级缓存的实现
  7. JAVA WEB篇3——JSP
  8. java store()_Java.util.Properties.store()
  9. java参数传入泛型类型_Java泛型参数界定到任何一个类型的范围
  10. 经典数据结构——堆的实现