Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring批处理:如果读取器不读取任何内容,则不会调用Writer_Spring_Spring Boot_Spring Batch - Fatal编程技术网

Spring批处理:如果读取器不读取任何内容,则不会调用Writer

Spring批处理:如果读取器不读取任何内容,则不会调用Writer,spring,spring-boot,spring-batch,Spring,Spring Boot,Spring Batch,我的工作中有一个步骤,从数据库a读取数据,然后写入数据库B&C 如果select语句不产生任何结果,我希望它像往常一样继续运行到处理器和编写器。但是,不会调用writer() 这是因为mywriter是一个复合项编写器,它有一个编写器更新一个控制表(数据库C),表示读卡器没有读取结果 我显然会有一个新的TaskletStep来遵循这个Step,但这是一个分区步骤 是否有作业的配置属性允许空读取不标记为“NOOP”或类似,而是标记为成功?创建一个自定义ItemReader,如果未读取任何项,则返回

我的工作中有一个
步骤
,从数据库a读取数据,然后写入数据库B&C

如果select语句不产生任何结果,我希望它像往常一样继续运行到
处理器和
编写器。但是,不会调用
writer()

这是因为my
writer
是一个复合项编写器,它有一个编写器更新一个控制表(数据库C),表示读卡器没有读取结果

我显然会有一个新的Tasklet
Step
来遵循这个
Step
,但这是一个分区步骤


是否有
作业的配置属性
允许空读取不标记为“NOOP”或类似,而是标记为成功?

创建一个自定义
ItemReader
,如果未读取任何项,则返回一个哨兵项。

添加一个自定义
ItemWriter
映射到sentinel item类,在该类中更新控制表。

创建一个自定义
ItemReader
,如果未读取任何项目,该类将返回sentinel项目。

添加一个定制的
ItemWriter
映射到sentinel item类,您可以在该类中更新控制表。

您应该能够为此用例使用
StepExecutionListener
,而不是
ItemWriter
。在该
StepExecutionListner#afterStep
中,您可以查看项目读取计数,如果为0,则执行数据库更新。编写器是一个
ItemWriter
,这意味着它将用于编写已读的项目。

对于此用例,您应该能够使用
StepExecutionListener
而不是
ItemWriter
。在该
StepExecutionListner#afterStep
中,您可以查看项目读取计数,如果为0,则执行数据库更新。编写器是一个
ItemWriter
,这意味着它将用于编写已读取的项目