最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBatch跳過(guò)異常和限制方式

 更新時(shí)間:2021年09月07日 16:59:57   作者:籃球場(chǎng)上舊少年  
這篇文章主要介紹了SpringBatch跳過(guò)異常和限制方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

SpringBatch容錯(cuò)處理

1. 案例說(shuō)明

從DB中reader出1000條數(shù)據(jù),chunk = 100,當(dāng)?shù)诙€(gè)chunk出現(xiàn)NullPointerException或者StringIndexOutOfBoundsException異常。業(yè)務(wù)要求batch不終了,程序繼續(xù)執(zhí)行。

2. 跳過(guò)異常限制

下記有兩種實(shí)現(xiàn)方法。

2.1 skip 和 skipLimit配置

  @Bean
  public Step job1step1() throws Throwable {
    return stepBuilderFactory
        .get(_JOB_STEP_NAME)
          .listener(_stepListener)
          .<Model1, Model2>chunk(_CHUNK_SIZE)
          .reader(reader())
          .processor(processor())
          .writer(writer())
          .faultTolerant()
          .skipLimit(10)
          .skip(NullPointerException.class)
          .skip(StringIndexOutOfBoundsException.class)
          .build();
  }

上記代碼示例中的skipLimit方法限制最大跳過(guò)數(shù),skip方法限制跳過(guò)的異常類(lèi)型。

這樣某條數(shù)據(jù)出現(xiàn)異常時(shí),并不會(huì)終了step,而是跳過(guò)本條錯(cuò)誤數(shù)據(jù),繼續(xù)處理下一條。

2.2 自定義跳過(guò)配置SkipPolicy 接口

SkipPolicy相對(duì)于skip更加靈活。

例:業(yè)務(wù)要求,userId = 110的用戶(hù)出現(xiàn)上記兩個(gè)異常時(shí),程序終了。

step代碼

  @Bean
  public Step job1step1() throws Throwable {
    return stepBuilderFactory
        .get(_JOB_STEP_NAME)
          .listener(_stepListener)
          .<Model1, Model2>chunk(_CHUNK_SIZE)
          .reader(reader())
          .processor(processor())
          .writer(writer())
          .faultTolerant()
          .skipPolicy(new SkipPolicyTask())
          .build();
  }

自定義SkipPolicy 接口代碼

public class SkipPolicyTask implements SkipPolicy {
    private static final int MAX_SKIP_COUNT = 10;
    private static final int USER_ID= 110;
 
    @Override
    public boolean isSkipFlg(Throwable throwable, int skipCount) 
      throws SkipLimitExceededException {
 
        if (throwable instanceof NullPointerException && skipCount < MAX_SKIP_COUNT) {
            return true;
        }
 
        if (throwable instanceof StringIndexOutOfBoundsException && skipCount < MAX_SKIP_COUNT ) {
            if(common.getUserId == INVALID_TX_AMOUNT_LIMIT) {
                return false;
            } else {
                return true;
            }
        }
        return false;
    }
 }

return flase 程序終了,retuen true 跳過(guò)異常。

SpringBatch 錯(cuò)誤積累

1.如果nextStep在該JOB中還沒(méi)有配置

也就是說(shuō)nextStep還不存在的情況下,就會(huì)報(bào)錯(cuò)

<end on="EIXT WITH IMBALANCE" />
  <next on="BALANCED" to="nextStep" />
<fail on="*" /> 

Caused by: java.lang.IllegalArgumentException: Missing state for [StateTransition: [state=bain_Job.bainToTableStep, pattern=BALANCED, next=bain_Job.trustAcctBatPayStep]]
at org.springframework.batch.core.job.flow.support.SimpleFlow.initializeTransitions(SimpleFlow.java:283) ~[spring-batch-core-3.0.0.RELEASE.jar:3.0.0.RELEASE]
at org.springframework.batch.core.job.flow.support.SimpleFlow.afterPropertiesSet(SimpleFlow.java:128) ~[spring-batch-core-3.0.0.RELEASE.jar:3.0.0.RELEASE]
at org.springframework.batch.core.configuration.xml.SimpleFlowFactoryBean.getObject(SimpleFlowFactoryBean.java:125) ~[spring-batch-core-3.0.0.RELEASE.jar:3.0.0.RELEASE]
at org.springframework.batch.core.configuration.xml.SimpleFlowFactoryBean.getObject(SimpleFlowFactoryBean.java:46) ~[spring-batch-core-3.0.0.RELEASE.jar:3.0.0.RELEASE]
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:168) ~[spring-beans-4.1.5.RELEASE.jar:4.1.5.RELEASE]
... 42 common frames omitted

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

蒙自县| 中超| 平舆县| 襄樊市| 邯郸市| 明星| 孝感市| 高雄县| 宿松县| 崇州市| 龙州县| 南溪县| 潮州市| 巩义市| 安福县| 崇礼县| 阳东县| 榆林市| 咸阳市| 眉山市| 北宁市| 额济纳旗| 南木林县| 安丘市| 青阳县| 新兴县| 张家口市| 临猗县| 德化县| 舞阳县| 石嘴山市| 衢州市| 巢湖市| 神农架林区| 怀安县| 镇赉县| 罗城| 阳高县| 沐川县| 朝阳县| 庄浪县|