当前位置: 首页 > 知识库问答 >
问题:

在Spring批处理中使用2个数据源时面临提交问题

齐志勇
2023-03-14

我的项目进行批处理,并尝试使用2个数据源(oracle)(一个用于spring元数据,另一个用于应用程序)。

示例配置在github项目(github.com/jobas2007/spring_proj)中,但由于配置了2个事务管理器/数据源,因此在为2个数据源执行的提交中管理事务似乎不一致。主数据源(用于批处理)提交正确发生,但当最终在ItemWriter中进行“保存”时,

请建议一种管理多个数据源之间事务的好方法?

根据链接https://blog.codecentric.de/en/2012/03/transactions-in-spring-batch-part-1-the-basics/,当进入步骤时,Tx启动一个区块

尝试了其中一个帖子的建议,使用“ChainedTransactionManager”,但在Spring Batch中连接使用多个数据源时面临重大问题

代码在github中

预期的结果是有可预测的、稳健的tx管理

共有1个答案

仉宸
2023-03-14

如果决定在Spring Batch中使用两个数据源,则需要使用JtaTransactionManager来同步两个数据源之间的分布式事务。

你可以在这里找到David Syer博士关于这个问题的一篇很棒的文章:Spring中的分布式事务,有XA和没有XA

 类似资料:
  • 我试图在Spring批处理中配置几个数据源。启动时,Spring批处理抛出以下异常: 批处理配置的代码段 不知道为什么我会看到这个异常,因为我看到了一些基于xml的Spring批处理配置,这些配置声明了多个数据源。我使用的是Spring批处理核心版本3.0.1.发行版和Spring Boot版本1.1.5.发行版。如有任何帮助,将不胜感激。

  • 我有一个spring批处理应用程序,可以将5M条记录从一个文件加载到SQL Server数据库中。我有根据国家代码区分的不同数据源。当我使用带有@primary注释的单个数据源时,spring batch writer在5分钟内写入5M条记录。但是,当我使用@bean注释给出多个数据源并使用一个非主数据源将文件数据写入数据库时,perforamnce变得非常慢,对于同样的500万条记录,大约需要1

  • 我有写入数据库的Spring Batch作业(它有一个带有的步骤)。我有一个联调,如下所示: 在测试中运行作业时,它会提交到数据库。如何防止提交到数据库?通常,我可以添加以在每次测试后回滚事务。但是,当我将注释添加到测试类时,我收到: 使现代化 我试图将添加到测试类中。但是,仍然提交。 以下是应用程序代码中事务管理器的配置:

  • 我需要访问两个数据源: Spring批处理存储库:在内存H2中 我的步骤需要访问。 我在那里看到了几个关于如何创建自定义

  • 我使用带分页的ItemReader从源表获取数据。在ItemProcessor上,我将使用项的id逐个向服务发送rest请求,并将其响应传递给ItemWriter以存储在另一个表中。 首先读取(第1页),区块上的每个项目的状态为未处理,然后在处理并将其响应保存到另一个表后,我想更新当前区块中要处理的所有项目的状态。 在ItemReader上,我正在选择所有状态为未处理的项目。从状态=未处理的表中选

  • 我正在编写Spring批的Spring Boot应用程序,其中ItemReader从Oracle数据库读取数据并将数据写入postgres sql,但我得到了以下错误 我不想创建spring批处理元数据表,我的应用程序不需要监视作业,请就此向我提出建议。提前谢谢!!