网监备案网站更换域名,郑州建设网站推广公司,重庆网站建设找重庆最佳科技,服装定制工作室Javadoc为 org.springframework.jms.listener.AbstractMessageListenerContainer 表示#xff0c;如果“sessionAcknowledgeMode”设置为“CLIENT_ACKNOWLEDGE”#xff1a;成功侦听器执行后自动确认消息;如果抛出异常#xff0c;则无法重新发送 .我猜#xff0c;“在抛出异…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 中完成的确认 .Thats ok, but what does no redelivery in case of exception thrown mean then?附加信息spring JMS4.1.2