Spring integration MessaginException和ErrorMessage在spring集成中的使用差异
我必须分析下面给出的一段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
<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
,则将采用其他路由