Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring集成入站jms适配器错误通道未调用_Spring_Jms_Integration - Fatal编程技术网

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

Spring集成入站jms适配器错误通道未调用,spring,jms,integration,Spring,Jms,Integration,场景是入站jms适配器->服务激活器(db搜索、业务逻辑、插入或更新) 当在我的servcie activators期间引发异常时,我的errorHandler工作正常,但异常在末尾(提交后),例如db unique constrat异常,消息不会转到错误通道,而是仅回滚到jms队列 但我需要我的errorHander在这种情况下也因为我需要发送电子邮件例外等 先遣坦克 最好的祝愿,塔马斯,我认为你的问题是,你必须在你的错误处理程序中返回TX,但不要提交 这就是为什么从DefaultMess

场景是入站jms适配器->服务激活器(db搜索、业务逻辑、插入或更新)


当在我的servcie activators期间引发异常时,我的errorHandler工作正常,但异常在末尾(提交后),例如db unique constrat异常,消息不会转到错误通道,而是仅回滚到jms队列

但我需要我的errorHander在这种情况下也因为我需要发送电子邮件例外等

先遣坦克
最好的祝愿,塔马斯,我认为你的问题是,你必须在你的
错误处理程序中返回TX,但不要提交

这就是为什么从
DefaultMessageListenerContainer
获得
egyediségre vonatkozómegszorítás nem tel
,因为DB错误是在提交时产生的


请参见此处:

您会遇到什么异常?请打开
org.springframework.integration
类别的调试,并在此处显示有关该问题的日志调试处于活动状态。没有关于error-channel.WARN MessageListenerContainer#1-7 org.springframework.jms.listener.DefaultMessageListenerContainer的调试消息jms消息侦听器调用者的安装失败,目标“Consumer.Lime.VirtualTopic.SWIFT.Interface.Test1”-正在尝试恢复。原因:无法提交JPA事务;嵌套异常是javax.persistence.RollbackException:exception[EclipseLink-4002](Eclipse持久性服务-2.4.1.v20121003-ad44345):org.Eclipse.persistence.exceptions.DatabaseException内部异常:java.sql.SQLException:ORA-00001:a(z)(NEST.LIME\u MT950\u DETAIL\u PK)egyediségre vonatkozómegszorítás nem tel异常是ok pk唯一常量,但我想在errorHandler中处理此问题以发送电子邮件等。Spring在结束时提交事务,而不是我。问题是没有调用我的错误处理程序。>当在我的servcie activators期间引发异常时,我的错误处理程序会按照您的话运行。所以,或者您必须从
errorChannel
中重新调用异常,或者手动将其回调。Spring确实尝试提交TX,但由于约束问题,它无法提交。约束是service activator异常的结果。抱歉,我忘了提到这是我的service activator引发的另一个异常,例如检查一些业务检查,如果需要,则引发自定义异常。在这种情况下,我的errorHander获得消息,我可以发送电子邮件等。但当dao.save出现db pk constrait异常时,我的errorHandler没有收到任何消息,而是回滚到队列。抱歉我的英语不好:-(请打开
org.springframework.jms.listener
类别的调试,从
handleListenerSetupFailure
切换到StackTrace。
<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>