我们有现有的spring批处理应用程序,我们想使它可以在多个节点上运行。
spring批处理的可伸缩性文档包括代码更改和配置更改。
我只是想知道这是否可以通过仅仅配置更改来实现(添加新的类并在配置中连接它是好的,但只是想避免对现有的类进行代码更改)。
非常感谢事先的帮助。
这真的取决于你的情况。具体来说,为什么要在多个节点上运行?你试图克服的瓶颈是什么?spring批处理用于跨多个节点扩展的两种典型场景是远程分块和远程分区。这两种配置都是主/从配置,但都有不同的用例。
当一个步骤中的处理器是瓶颈时,使用远程分块。在这种情况下,主节点读取输入,并通过spring集成通道将其发送到远程节点进行处理。处理完项后,结果将返回母版进行写入。在这种情况下,读写是在本地对主机完成的。虽然这有助于并行化处理,但它需要一个I/O命中,因为每个项目都是通过有线发送的(并且需要有保证的交付,例如ala JMS)。
远程分区是另一种情况。在这种情况下,主机为每个从机生成要处理的输入的描述,并且只有该描述通过导线发送。例如,如果您正在处理数据库中的记录,则主服务器可能会向每个从服务器发送一系列行ID(1-100,101-200等)。读写发生在从机的本地,不需要保证交付(尽管在某些情况下很有用)。
根据您的用例,这两个选项都可以用最小的(或没有)新的类来完成。有几个不同的地方可以查找有关这些功能的信息:
在任何这种情况下,远程分块都可以在没有新类的情况下完成。远程分区通常需要实现一个新类(分区器)。
到目前为止,我正在运行spring批处理,只有一个作业。现在我想运行多个不同的作业,这意味着不同的功能。在我的配置文件中,我配置了两个具有不同id和不同名称的作业。现在我得负责这些工作。你能告诉我怎么跑吗。在这里,我的疑问是在我的java类中,我已经为运行批处理编写了这段代码。 对于其他作业,如何调用jobLauncher的run方法。 我的配置文件是
我试图让原子与我的Spring Boot/Spring Batch应用程序一起工作。 以下是我代码的相关部分: 数据源配置: Atomikos自动配置依赖项: 我的application.properties代码: 这是自动配置报告: 我不知道为什么Atomikos没有自动配置。。。谁能帮忙吗? 编辑:我已经注释掉了JTA transactionManager bean,现在我得到了以下自动配置报
我使用的是Spring Batch 2.1.8。释放我有一个文件,它由一些头信息和一些需要处理的记录组成。 我有一个使用面向块处理的步骤。该步骤包含ItemReader和ItemWriter的实现。ItemReader实现是线程安全的,而ItemWriter不是。 我想在处理(或写入)任何记录之前使用标题信息。在继续使用面向块的处理时,如何确保这一点? 建议的解决方案:一种解决方案可以是编写一个预
我正在尝试在Tomcat上部署多个spring boot web应用程序。所有应用程序都有相同的application.properties。如何拆分在Tomcat上运行的不同应用程序的配置文件。
我必须在表中的一些配置数据库中爬行。其中每个记录指定要从中读取的模式。因此,我们必须对表格进行投票,并适当地运行作业。 考虑使用Spring批处理(JdbcPagingItemReader)从所有配置的模式中读取数据。如果我必须配置它,如何使用Spring批处理? 我应该使用不同的读取器为每个数据库读取多个作业,还是有什么方法可以在运行时发送数据源以供Spring Batch读取数据? 如何为单个
我有一个多Maven模块Spring Boot项目,具有以下结构: webservices和backend都是单独的Spring Boot应用程序(它们生成一个jar文件,我用它来启动它们),它们依赖于commons模块。因此,我将commons作为一个依赖项包含在webservices和后端的pom中。xml。 我对启动我的应用程序没有什么疑问。 如何在单个JVM中启动后端和webservice