Spring Integration中如何处理嵌套事务异常

亚历克斯·D

我有一个基于数据库的通道和一个简单的集成流程,如下所示:

        return IntegrationFlows.from("messageChannel")
                .handle(messageHandler, "process", consumer ->
                        consumer.poller(poller -> poller
                                .fixedDelay(3000)
                                .transactional()
                                .transactionSynchronizationFactory(messageStoreSynchronizationFactory)
                                .taskExecutor(taskExecutor)
                                .receiveTimeout(1000)
                                .maxMessagesPerPoll(10)))
                .get();

作为消息处理(messageHandler.process的一部分,我需要打开嵌套事务以联系其他数据库。问题是,嵌套事务可能引发的任何未处理的异常都会将我的父事务设置为rollback-only将我的消息返回到通道的父事务这将创建一个阻塞通道的循环,直到解决嵌套事务的问题为止。

从理论上讲,我应该在嵌套事务中捕获并处理异常,并且永远不要传播给父事务,但是用我当前的项目体系结构很难实施。

删除.transactional()从轮询中移除了父事务出来的图片和“修复”的问题,但那么它永远不会调用事务同步工厂(这是有道理的)。

有没有办法允许嵌套事务抛出异常并仍然处理消息?

加里·罗素

您可以添加.gateway()中间流并通过它来处理异常,也可以向处理程序的端点errorChannel添加ExpressionEvaluatingRequestHandlerAdvice(或自定义建议)以在那里处理异常。

请参阅将行为添加到端点

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring Integration Flow中如何处理FtpOutboundAdapter连接异常

如何处理Spring集成流程的事务(Java DSL)

如何在事务中处理Spring休眠无锁获取的异常

Spring Integration中拆分后如何处理消息(即使会有错误)?

在Spring MVC中渲染视图时如何处理抛出的异常?

如何处理spring集成中的错误

在哪里以及如何处理spring + hibernate异常?

使用Spring Kafka框架时如何处理错误/异常?

在 Spring Integration 中处理异常时遇到问题

如何在Spring中处理具有并发访问的事务

Spring Integration的DefaultMessageListenerContainer和JPA中的事务

如何为Spring集成流程添加try catch异常以实现嵌套事务

Spring-Integration Webflux异常处理

如何使用spring-integration-smb进行事务处理

如何处理Java(Spring Data)中未知类型的表列?

Spring Boot中如何处理服务的可选服务依赖?

如何处理Spring Boot中超时的异步请求?

如何处理 Reactive Spring webflux 中的错误

如何处理未在Spring中映射的url

Spring Boot中的异常处理

Spring webflux 中的异常处理

与Hibernate嵌套的Spring事务

Spring事务在@Transactional方法中处理JMSTemplate

在Spring数据中处理并发事务

在Spring-Boot中处理并发事务

在Spring选择中的何处使用'in'而不是'='的异常

如何在Spring Boot中处理DeferredResult中的异常?

Spring Security如何处理UsernameNotFoundException

如何处理JSONP(Spring Framework 5.1)