处理由消息驱动的入站通道适配器上的消息转换器引起的异常
Handle exceptions caused by message-converter on Message Driven Inbound Channel Adapter
在下面的配置中,我有一个 message-driven-channel-adapter
和一个 message-converter
,所以 service-activator
是用转换后的有效负载调用的。
<int-jms:message-driven-channel-adapter id="myConsumerChannelAdapter" connection-factory="connectionFactory"
destination="input_queue" channel="input_channel" error-channel="errorChannel"
message-converter="messageConverter" header-mapper="jmsHeaderMapper" acknowledge="client" max-concurrent-consumers="10"/>
<int:service-activator input-channel="input_channel" output-channel="output_enricher_channel" ref="MyConsumer"/>
如果 MyConsumer
抛出异常,它将被发送到 errorChannel
。到目前为止,它按预期工作。
但是当消息转换器抛出像 MessageConversionException
这样的异常时,它不会发送到 errorChannel
。如果我记录由消息转换器引起的异常,我得到:
AbstractMessageListenerContainer.invokeErrorHandler(875) | Execution of JMS message listener failed, and no ErrorHandler has been set.
但是如何将 ErrorHandler
分配给我的通道适配器或将这些异常发送到我的 errorChannel
?
这将在即将发布的 4.2 版本中提供。
https://jira.spring.io/browse/INT-3670
我提出 JIRA 的 有一个(某种)解决方法,但它有点笨拙。
可以尝试4.2.0.BUILD-SNAPSHOT进行测试;在接下来的几周内会有一个里程碑,但最终版本计划要到夏季结束时才会发布。
在下面的配置中,我有一个 message-driven-channel-adapter
和一个 message-converter
,所以 service-activator
是用转换后的有效负载调用的。
<int-jms:message-driven-channel-adapter id="myConsumerChannelAdapter" connection-factory="connectionFactory"
destination="input_queue" channel="input_channel" error-channel="errorChannel"
message-converter="messageConverter" header-mapper="jmsHeaderMapper" acknowledge="client" max-concurrent-consumers="10"/>
<int:service-activator input-channel="input_channel" output-channel="output_enricher_channel" ref="MyConsumer"/>
如果 MyConsumer
抛出异常,它将被发送到 errorChannel
。到目前为止,它按预期工作。
但是当消息转换器抛出像 MessageConversionException
这样的异常时,它不会发送到 errorChannel
。如果我记录由消息转换器引起的异常,我得到:
AbstractMessageListenerContainer.invokeErrorHandler(875) | Execution of JMS message listener failed, and no ErrorHandler has been set.
但是如何将 ErrorHandler
分配给我的通道适配器或将这些异常发送到我的 errorChannel
?
这将在即将发布的 4.2 版本中提供。
https://jira.spring.io/browse/INT-3670
我提出 JIRA 的
可以尝试4.2.0.BUILD-SNAPSHOT进行测试;在接下来的几周内会有一个里程碑,但最终版本计划要到夏季结束时才会发布。