Spring集成入站jms适配器错误通道不会调用

时间:2014-08-29 14:01:54

标签: spring jms integration

方案是入站jms适配器 - >服务激活器(数据库搜索,业务逻辑,插入或更新)

<int-jms:message-driven-channel-adapter id="swiftAdapterInput" channel="mt950"
        connection-factory="connectionFactory" destination-name="${integration.swift.jms.queue.from}" pub-sub-domain="false"
        auto-startup="false" error-channel="errorChannel" transaction-manager="transactionManager" acknowledge="transacted" />

<int:service-activator input-channel="errorChannel" ref="errorHandler" />

<bean id="errorHandler" class="nest.integration.utils.error.ErrorHandler" />


<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

当我的servcie激活器抛出异常时,我的errorHandler工作正常,但异常是在结束时(提交后),例如db unique constrat异常,消息不会转到错误通道,而只是回滚到jms队列。

但在这种情况下我需要我的errorHander,因为我需要发送电子邮件异常等。

坦克提前 祝愿Tamas

1 个答案:

答案 0 :(得分:0)

我认为你的问题是你必须在你的errorHandler中反对TX,但不要提交。

这就是你从egyediségre vonatkozó megszorítás nem tel获得DefaultMessageListenerContainer的原因,因为在提交时会导致数据库错误。

见这里:Exceptions in Spring Integration: How to log but not intercept