【发布时间】:2014-10-23 13:29:34
【问题描述】:
场景是入站 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,因为我需要发送电子邮件异常等。
坦克提前 最美好的祝愿,塔马斯
【问题讨论】:
-
你得到了什么异常?
-
请为
org.springframework.integration类别打开DEBUG并在此处显示有关此事的日志 -
调试处于活动状态。没有关于错误通道的调试消息。
-
WARN MessageListenerContainer#1-7 org.springframework.jms.listener.DefaultMessageListenerContainer 目标“Consumer.Lime.VirtualTopic.SWIFT.Interface.Test1”的 JMS 消息侦听器调用程序设置失败 - 试图恢复。原因:无法提交 JPA 事务;嵌套异常是 javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException 内部异常: java.sql.SQLException: ORA-00001 : a(z) (NEST.LIME_MT950_DETAIL_PK) egyediségre vonatkozó megszorítás nem tel
-
例外是ok pk unique constarit,但我想在errorHandler中处理这个以发送电子邮件等。
标签: spring jms integration