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

记录被处理两次

谢英耀
2023-03-14

我们有一个spring批处理程序,它可以访问读卡器中的一组数据,对其进行处理和写入。这一切都是成批发生的。

我注意到,处理器和写入程序对同一数据进行了两次检查,一次作为批处理,一次作为单个记录。

例如:写入器读取1000条记录,向处理器发送1000条记录,向写入器发送1000条记录。

在此之后,记录再次被单独处理,但只调用处理器和写入器。

我们在所有读卡器、处理器和写入程序中都有日志语句,我可以看到日志。

是否有任何条件可以使记录在作为列表处理后单独处理?

    <batch:job id="feeder-job">
    <batch:step id="regular">
        <tasklet>
            <chunk reader="feeder-reader" processor="feeder-processor"
                writer="feeder-composite-writer" commit-interval="#{stepExecutionContext['query-fetch-size']}"
                skip-limit="1000000">
                <skippable-exception-classes>
                    <include class="java.lang.Exception" />
                    <exclude class="org.apache.solr.client.solrj.SolrServerException"/>
                    <exclude class="org.apache.solr.common.SolrException"/>
                    <exclude class="com.batch.feeder.record.RecordFinderException"/>
                </skippable-exception-classes>
            </chunk>
            <listeners>
                <listener ref="feeder-reader" />
            </listeners>
        </tasklet>
    </batch:step>
</batch:job>

共有1个答案

司业
2023-03-14

在使用一个特性之前,你应该好好阅读它。这里你是正确的,只有在错误发生后才会进行两次处理。

基本上,您已经定义了一个区块/步骤,该区块/步骤对配置跳过逻辑的特定异常具有容错性

除非总异常计数保持在跳过限制以下,否则您的步骤不会失败,但如果出现错误,区块项目将被处理两次——一次接一次,第二次,并在第二次处理中跳过坏记录。

 类似资料:
  • 我使用的是spring批处理,和通常使用的一样,我有读取器、处理器和写入器。 我有两个问题 1>Reader查询所有200条记录(表中记录总大小为200,我给出了pageSize=200),因此它得到所有200条记录,在处理器中,我们需要所有这些记录的列表,因为我们必须将每个记录与其他199条记录进行比较,以便将它们分组在不同的层中。因此我在想,如果我们能在处理步骤中得到那个列表,我就可以操纵它们

  • 问题内容: 我想在我的应用程序中将slf4j + logback用于两个目的-日志和审计。 对于日志记录,我以常规方式记录日志: 对于审计,我创建一个特殊的命名记录器并登录到它: 登录配置: 问题:通过审核记录器记录的消息出现两次-一次在AUDIT_LOGGER下,一次在根记录器下。 14:41:57.975 [main]调试com.gammay.example.Main–> main() 14:

  • 我正在使用spring批处理使用RepositoryItemReader从postgresql DB读取记录,然后将其写入主题。我看到大约有100万条记录需要处理,但它并没有处理所有的记录。我已经将reader的pageSize设置为10,000并且与提交间隔(块大小)相同

  • 下面是我的代码片段: 现在java用'unhandled exception type SQLException)标记指示语句(以及后面的所有语句)。gfsql.dosql抛出此异常并定义为: public ResultSet doSQL(String sqlCommand)抛出SQLException{ 有趣的是--如果我像这样重复“catch”块: 未标记“未处理”错误。(但是,重复的catc

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 我的批处理作业不处理所有已读记录。 完成作业后,Spring批处理日志中读取了198282条记录,但在处理器中我有一条日志,在开始处理之前只记录了196503条,但有时,处理器处理了所有的记录。 步进 Spring启动版本:2.0.1