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

Spring批处理程序未执行

锺霍英
2023-03-14

我正在使用STS 2.81附带的Spring Batch模板和Manning的Spring Batch in Action中的示例创建一个Spring Batch作业。我可以毫无问题地执行块读取器和写入器,但我的代码跳过了处理器。我甚至尝试过在处理器中取消所有对象,但什么也没有,对象仍然设法被写入,就像处理器被忽略一样。我尝试在处理器中调用system.out.println,但没有在终端中打印出来。我最终通过注释将配置从使用XML bean改为使用组件,但它也不起作用。我不确定是否有一些设置我错过了...我在Spring Batch中和SpringSource网站上都遵循了示例,一切看起来都很好...帮助!

<batch:job id="job1">
    <batch:step id="step1"  >           
        <batch:tasklet transaction-manager="transactionManager" start-limit="100" >
            <batch:chunk reader="productFlatFileReader"
                         processor="productProcessor"
                         writer="productFlatFileWriter"
                         commit-interval="10" />
        </batch:tasklet>
    </batch:step>
</batch:job>
<bean id="productProcessor" class="com.test.training.processors.ProductProcessor" />
package com.test.training.processors;

import org.springframework.batch.item.ItemProcessor;
import org.springframework.stereotype.Component;
import com.test.training.entities.Product;

public class ProductProcessor implements ItemProcessor<Product, Product> {

@Override
public Product process(Product product) throws Exception {
    product.setDescription("Processor is WORKING!");
    return product;
    //return this.validateProductByProductIdentifier(product) ? null : product;
}

private boolean validateProductByProductIdentifier(Product product) {
    return product.getProduct_identifier() == 5 ? true : false;
}
}

共有1个答案

桓高澹
2023-03-14

您的bean配置需要具有scope=“step”以便Spring Batch将bean识别为批处理bean。

比如:

<bean id="productProcessor" scope="step" class="com.test.training.processors.ProductProcessor" />
 类似资料:
  • 我需要依次执行七个不同的流程(一个接一个)。数据存储在Mysql中。我正在考虑以下选项,如果我错了,或者有更好的解决方案,请纠正我。 要求: > 需要分块处理数据。 我的解决方案和问题:数据读取: 使用JdbcCursorItemReader读取数据,因为这是性能最好的db阅读器-但是,SQL非常复杂,所以我可能不得不考虑使用JdbcTemboard的自定义ItemReader?这让我在处理数据时

  • 我正在使用带有thymeleaf的Spring Boot,我所有的资源都在Spring应用程序之外的路径上,例如。在dev env上应该使用url解析路径,并且live env继续路径。 为什么资源处理程序不处理这些类型的资源,但是如果我处理没有问题?我错过了什么吗? 编辑:如果是并且位置是url也没有被处理

  • 通过定义节流限制来解决:这里定义的相同:Spring batch Multithreading:节流限制影响 我注意到当我用20k条记录运行批处理时,一些线程已经开始处理,但在10个请求后就停止了。但是,其他线程正在正常处理。你能建议一下问题是什么吗?如果我保持corepoolsize=threadpoolsize=5,那么所有的线程都是正确分布的。

  • 我对spring batch基本上是新手。第一步,我从SFTP服务器获取一个文件,并使用JSch将其传输到本地目录。第二步,我读取本地目录中的文件,并将内容写入数据库。问题在于,在某些情况下,只执行saveDruchAltransaction(步骤2),而不执行getRemoteFile(步骤1) 配置类: 读者: 作家: 微线程: 我不知道该怎么做...我一直在尝试我从各地找到的东西。请帮忙谢谢

  • 您好,我是Spring batch的新手,我遇到了以下无法解决的异常: 此处为我的代码: 我可以通过添加

  • 我正在尝试修复Spring Batch中的一个问题,这个问题最近一直困扰着我们的系统。我们有一份工作,在大多数情况下都很好。下载和处理数据是一个多步骤的工作。 问题是有时工作会爆棚。也许我们试图连接到的服务器抛出了错误,或者我们在工作进行到一半时关闭了服务器。此时,下次我们的quartz调度程序尝试运行该作业时,它似乎什么也不做。以下是此作业定义的删节版本: 委婉地说,我是Spring Batch