Повторная доставка сообщений JMS при исключении в прослушивателе JMS

Javadoc дляorg.springframework.jms.listener.AbstractMessageListenerContainer утверждает, что если

«sessionAcknowledgeMode» установлен в «CLIENT_ACKNOWLEDGE»: автоматическое подтверждение сообщения после успешного выполнения слушателя; Нет возврата в случае исключения.

Я предполагаю, что «нет повторной доставки в случае возникновения исключительной ситуации» означает, что это сообщение не будет доставлено (поэтому, я думаю, оно будет подтверждено), даже если в прослушивателе jms было сгенерировано исключение. Но, исключение, выброшенное слушателем, означает, что обращение к нему не было успешным, и должна быть повторная доставка из-за отсутствия подтверждения.

Вопрос в том:
Что на самом деле должно произойти с подтверждением сообщения в случае возникновения исключения в слушателе jms?

Что действительно происходит, можно увидеть из этой трассировки стека:

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.
Это нормально, но что значит "нет возврата в случае исключениязначит

Дополнительная информация:
весна-JMS: 4.1.2

<bean id="someListenerContainerFactory" class="org.springframework.jms.config.DefaultJmsListenerContainerFactory">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="concurrency" value="1-10"/>
    <property name="sessionAcknowledgeMode">
        <util:constant static-field="javax.jms.Session.CLIENT_ACKNOWLEDGE"/>
    </property>
</bean>

Ответы на вопрос(1)

Ваш ответ на вопрос