在产品发布的最后一分钟,我发现Java Spring批处理有一个奇怪的问题。它进入无限循环。
这是我的配置:
<batch:job id="dbasJob" restartable="true">
<batch:step id="dbasStep" next="webService">
<tasklet>
<chunk reader="campaignReader" processor="campaignProcessor" writer="campaignWriter" commit-interval="1"
skip-limit="50">
<skippable-exception-classes>
<include class="java.lang.Exception" />
</skippable-exception-classes>
<listeners>
<listener ref="campaignProcessListener" />
<listener ref="campaignSkipListener" />
</listeners>
</chunk>
</tasklet>
<batch:listeners>
<batch:listener ref="promotionListener" />
</batch:listeners>
</batch:step>
记录总数为10条。因此,提交是在处理每一条记录之后进行的。我正在将结果写入Writer中的数据库。
我从阅读器中一个接一个地获取项目,处理并写入数据库。
public Campaign read()
{
return campaignList.isEmpty() ? null : campaignList.remove(0);
}
public Campaign process(Campaign campaign) throws UnexpectedInputException, ParseException, Exception {
try
public void write(List<? extends Campaign> campaignList) throws Exception
{//...Writing to DB...
它一直在运行,并将数据无限地插入表中。
观察结果是:提交间隔
如果有人提出一些解决方案/解决方法,在因为这个问题而举行生产发布时,这将对我有最大的帮助。
多谢了。
关于这个问题有一个公开的问题
我正在做简单的Spring批量工作。当我启动作业时,它在无限循环中运行。它不会停止。根据我的时间表,它应该每10秒运行一次。但当工作开始时,它不会停止。它只是分别从读卡器、处理器和写入器打印系统输出。我正在为读者、处理者和作者创造工作机会。我正在按注释进行所有配置。不是通过xml。 下面是批处理配置 PersonReader。JAVA 人Writer.java 个人处理器。JAVA
我怎样才能停止一个工作在Spring批次?我尝试使用下面的代码来使用这个方法: 我尝试也完成了,失败了,但这个方法不工作,作业继续执行。有解决办法吗?
我的spring批处理应用程序运行在连接到MySQL数据库(单实例)的PCF平台上,只有一个实例启动时运行良好
我们当前的代码库具有以下重要特征: 一个代码库-但是很多批处理(我们在批处理之间重用代码) 目前,我们在代码库中有多个main()方法,并且只有不同的shell脚本来调用正确的main类。 我希望在Spring Batch中解决以下问题: null 提前谢了。
我很难找到这个问题的正确答案。当使用Spring批处理框架时,是否可以尝试在一个通用作业中解决所有的批处理?
我正在为我们的文件上传过程执行一个spring批处理工作。我的要求是读取平面文件,应用业务逻辑,然后将其存储在DB中,然后发布一个Kafka消息。 我有一个基于块的步骤,它使用自定义的读取器、处理器和写入器。这个过程工作得很好,但是处理一个大文件需要很多时间。 处理一个有60k条记录的文件需要15分钟。我需要减少到5分钟以下,因为我们将消耗比这更大的文件。 根据https://docs.sprin