【问题标题】:Mulesoft batch crashesMulesoft 批处理崩溃
【发布时间】:2020-06-03 10:57:55
【问题描述】:

我是 mulesoft 的新手,有一个关于批处理的问题。如果批处理在两者之间崩溃并且一些记录已经处理,当批处理重新开始时会发生什么。重复数据???

【问题讨论】:

    标签: batch-processing mulesoft


    【解决方案1】:

    它将尝试继续处理批处理队列中的待处理数据,除非它被崩溃损坏。

    【讨论】:

      【解决方案2】:

      答案取决于几件事。首先,除非您将批处理作业范围配置为允许记录级别失败,否则当记录失败时整个作业将停止。其次,如果您确实配置为允许失败,那么批处理将继续处理所有记录。在这种情况下,可以将每个批处理步骤配置为仅接受成功的记录(默认),或仅接受失败的记录,或所有记录。

      所以你的问题的答案取决于配置。

      至于重复数据,这部分完全取决于您。

      如果您因失败而停止作业,当您重新启动它时,您当时提供的记录集将是已处理的记录集。如果您提交之前已经处理过一次的记录,那么它们将被再次处理。您可以在重新进入批处理作业时或在成功处理记录时提供过滤。

      【讨论】:

        【解决方案3】:

        在回答您的问题之前,我想知道几件事。 一种。批量崩溃是什么意思? 你是说在批处理期间有一些 JVM 命中并且 批处理又开始了?

        或者批次处理部分记录失败?

        a.1 --> 如果 JVM 命中则整个程序停止。 需要重新启动程序。这导致处理 同一组记录。

        a.2 --> 批量处理失败记录。 在批处理步骤中,您可以执行以下三个步骤。

        1. 将批处理作业设置为不考虑任何错误继续进行

                  <batch:job jobName="Batch1" maxFailedRecords="-1"> 
          
        2. 在批处理作业中创建 3 个批处理步骤:-

                a.processRecord.- process the 1st record in batch 
                  queue.
          
                b.ProcessSuccessful-
                  if there is no exception in a. go to batch step b.
          
                c.processFailure record.- 
                  if there is exception in a. goto batch step. c
          

        整个示例代码如下所示。

        <batch:job jobName="batchJob" maxFailedRecords="-1" >
            <batch:process-records>
                <batch:step name="processRecord"  acceptPolicy="ALL" >
        
                    log.info("process any record COMES IN THE STEP");
        
                </batch:step>
        
                <batch:step name="ProcessSuccessful"
                    acceptPolicy="NO_FAILURES">
        
                    log.info("process only SUCCESSFUL record")
        
                </batch:step>
                <batch:step name="processFailure" 
                   acceptPolicy="ONLY_FAILURES">
        
                    log.info("process only FAILURE record");
        
                </batch:step>
            </batch:process-records>
           <batch:on-complete>
        
             log.info("on complete  phase , log the successful and 
             failure count");
        
          </batch:on-complete>
         </batch:job>     
        

        N.B --> Mule 4.0 的代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-21
          • 2010-12-29
          • 2019-01-19
          • 1970-01-01
          • 2022-10-05
          • 1970-01-01
          相关资源
          最近更新 更多