Spring integration MessaginException和ErrorMessage在spring集成中的使用差异

Spring integration MessaginException和ErrorMessage在spring集成中的使用差异,spring-integration,Spring Integration,我必须分析下面给出的一段spring集成代码: <int:channel id="errorChannel" /> <int:exception-type-router input-channel="errorChannel" default-output-channel="otherError"> <int:mapping exception-type="MessageRejectedException" cha

我必须分析下面给出的一段spring集成代码:

<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以MessaginException对象作为输入,而OtherExceptionTransformer以ErrorMessage对象作为输入

到目前为止,我所了解的是MessaginException包含failedMessage和异常的原因, 而ErrorMessage应该包含消息类型

现在,我主要担心的是,我不明白在哪种情况下,我不会收到MessaginException对象

我试图从代码中抛出nullPointerException和IllegalArgumentException,spring仅将两者作为消息传递异常处理。所以我想知道其他错误通道何时会收到消息


有人对此有看法吗?

错误消息的有效负载为
MessagineException
,它有两个属性:
failedMessage
cause
(原始异常)

如果使用者(例如transformer)的参数为
MessaginException
,则框架将从消息中打开有效负载并调用它。如果消费者接收消息(或
ErrorMessage
),则会使用原始消息调用该消息

您的路由器专门在
MessageRejectedException
上路由,这是
messaginexception
的子类

如果抛出任何其他
MessaginException
,则将采用其他路由