我必须分析下面给出的一段弹簧集成代码:
<int:channel id="errorChannel" />
<int:exception-type-router input-channel="errorChannel"
default-output-channel="otherError">
<int:mapping
exception-type="MessageRejectedException"
channel="mreError" />
</int:exception-type-router>
<int:channel id="otherError" />
<int:transformer input-channel="otherError"
ref="otherExceptionTransformer" output-channel="errors" />
<bean id="otherExceptionTransformer"
class="OtherExceptionTransformer">
</bean>
<int:channel id="mreError" />
<int:transformer input-channel="mreError"
ref="mreExceptionTransformer" output-channel="errors" />
<bean id="mreExceptionTransformer"
class="MessageRejectedExceptionTransformer">
</bean>
<int:channel id="errors"/>
<int-jms:outbound-channel-adapter channel="errors"
connection-factory="connectionFactory" destination-
name="${myQueue.inbound.comp2}"/>
MessageRejectedExceptionTransformer 将 MessagingException 对象作为输入,但是 OtherExceptionTransformer 将 ErrorMessage 对象作为输入。
到目前为止,我所理解的是 MessagingException 包含 failedMessage 和异常原因,而 ErrorMessage 应该包含 Message 类型。
现在,我主要担心的是,我不明白在哪种情况下,我不会收到 MessagingException 对象。
我试图从我的代码中抛出 nullPointerException 和 IllegalArgumentException ,并且 spring 将两者都作为消息异常处理。所以我想知道 otherError 通道何时会收到一条消息。
有人对此有看法吗?