我已经成功设置了Spring Batch项目教程。我真的很想知道是否有可能在“ Spring级别”使它成为多线程的。
我想要的基本思想是列出任务或任务步骤的列表,并让它们由独立的线程拾取和处理,理想情况下是从限制为“ n”个线程的池中进行。
这可能吗?如果是这样,怎么办?有人可以引导我到我目前所在的位置吗?
简单的项目我是从本教程在这里。它基本上具有不同的任务,这些任务将消息打印到屏幕上。
这是我当前的simpleJob.xml文件,其中包含作业详细信息:
<import resource="applicationContext.xml"/>
<bean id="hello" class="helloworld.PrintTasklet">
<property name="message" value="Hello"/>
</bean>
<bean id="space" class="helloworld.PrintTasklet">
<property name="message" value=" "/>
</bean>
<bean id="world" class="helloworld.PrintTasklet">
<property name="message" value="World!\n"/>
</bean>
<bean id="taskletStep" class="org.springframework.batch.core.step.tasklet.TaskletStep" >
<property name="jobRepository" ref="jobRepository"/>
<property name="transactionManager" ref="transactionManager"/>
</bean>
<bean id="simpleJob" class="org.springframework.batch.core.job.SimpleJob">
<property name="name" value="simpleJob" />
<property name="steps">
<list>
<bean parent="taskletStep">
<property name="tasklet" ref="hello"/>
</bean>
<bean parent="taskletStep">
<property name="tasklet" ref="space"/>
</bean>
<bean parent="taskletStep">
<property name="tasklet" ref="world"/>
</bean>
</list>
</property>
<property name="jobRepository" ref="jobRepository"/>
</bean>
我的appContext包含作业存储库bean(SimpleJobRepository
),事务管理器(ResourceLessTransactionManager
)和作业启动器(SimpleJobLauncher
)。如果需要,我也可以提供此代码,我只是不想用大量的XML撰写这篇文章。
非常感谢您的帮助!
创建一个拆分,您将能够在不同分支之间使用多线程。使用TaskExecutor定义并行策略。
请参阅多线程步骤
如果要使用多线程和MapJobRepository,请确保使用最新版本的Spring
Batch(在最新版本之前,此JobRepository并非线程安全的)。
问题内容: 我写一个简单的应用程序,它涉及三个线程: ,和。 是 生成* 并馈给的生成器类。 * 消耗了 计算平均值。我的号码已经使用该饲料用。用途吃起来。 问题是:: 如果平均值超过中的1E5 ,我想表示停止产生数字。我有一个在需要被打开。我该如何实现? PS:该代码将永久运行,而无需在控制台上打印任何内容,我至今仍未弄清原因!! 问题答案: 您可以使用并将它传递给两个线程,原子类型是可访问的,
用例:步骤1:ItemReader:从数据库中读取1000个ItemProcessor块中的数据:处理这些数据。ItemWriter:将数据写入地图,以便下一步使用 步骤2:ItemReader:读取地图ItemProcessor:处理地图数据并获取新对象。ItemWriter:将新的进程对象持久化到数据库中。 现在我希望Map在整个作业中保持不变,目前我已经为Map创建了一个不同的POJO类,并
多线程。在这种模式下,SQLite可以安全地由多个线程使用,前提是在两个或多个线程中不同时使用单个数据库连接。 序列化。在序列化模式下,SQLite可以安全地由多个线程使用,不受限制。
我正在编写spring批处理,它从平面文件中读取数据,很少进行处理,并将摘要写入输出文件。与reader相比,我的处理器和写入程序相对更快。我正在使用FlatFileItemReader,并尝试了从50-1000开始的各种提交间隔。我的批处理作业必须以更快的速度处理1000万条记录。请告诉我如何提高FlatFileItemReader的速度。粘贴到我的配置文件和映射器类下面,读取字段集并将值设置为
问题内容: 有什么办法可以在Linux中设置线程的名称? 我的主要目的是在调试时会有所帮助,并且如果通过例如暴露该名称也很好 问题答案: 将功能与选项一起使用(请参阅docs)。 请注意,旧版本的文档有些令人困惑。他们说 设置调用进程的进程名称 但是由于线程是Linux上的轻量级进程(LWP),因此在这种情况下,一个线程就是一个进程。 您可以使用或使用以下命令查看线程名称: 或在之间的: 或从GD
我看到默认情况下,multithreadEvaluation设置为false。我有一个使用电子表格决策表的简单Maven Spring Drools实现。 没什么大不了的,因为它基本上是一个标准安装。我有一个restful API,当使用jeter将POST发送到我们的endpoint时,实体被填充,然后我们在上面触发所有规则。当在jeter中使用多个线程时,我可以清楚地看到多线程不起作用。 从留