亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • SpringBatch跳過異常限制和自定義跳過配置SkipPolicy接口的方法

SpringBatch跳過異常限制和自定義跳過配置SkipPolicy接口的方法

發布時間:2021-09-08 07:43:41 來源:億速云 閱讀:195 作者:chen 欄目:開發技術

這篇文章主要介紹“SpringBatch跳過異常限制和自定義跳過配置SkipPolicy接口的方法”,在日常操作中,相信很多人在SpringBatch跳過異常限制和自定義跳過配置SkipPolicy接口的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SpringBatch跳過異常限制和自定義跳過配置SkipPolicy接口的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  • SpringBatch容錯處理

    • 1. 案例說明

    • 2. 跳過異常限制

  • SpringBatch 錯誤積累

    • 1.如果nextStep在該JOB中還沒有配置

SpringBatch容錯處理

1. 案例說明

從DB中reader出1000條數據,chunk = 100,當第二個chunk出現NullPointerException或者StringIndexOutOfBoundsException異常。業務要求batch不終了,程序繼續執行。

2. 跳過異常限制

下記有兩種實現方法。

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方法限制最大跳過數,skip方法限制跳過的異常類型。

這樣某條數據出現異常時,并不會終了step,而是跳過本條錯誤數據,繼續處理下一條。

2.2 自定義跳過配置SkipPolicy 接口

SkipPolicy相對于skip更加靈活。

例:業務要求,userId = 110的用戶出現上記兩個異常時,程序終了。

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 跳過異常。

SpringBatch 錯誤積累

1.如果nextStep在該JOB中還沒有配置

也就是說nextStep還不存在的情況下,就會報錯

<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

到此,關于“SpringBatch跳過異常限制和自定義跳過配置SkipPolicy接口的方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大竹县| 离岛区| 宜黄县| 嘉黎县| 平塘县| 北流市| 黄骅市| 台北县| 利川市| 额济纳旗| 随州市| 太仆寺旗| 松溪县| 普安县| 闻喜县| 开封县| 修文县| 阿克苏市| 政和县| 逊克县| 屏南县| 泗水县| 麻城市| 六盘水市| 东源县| 衡南县| 淄博市| 正定县| 富民县| 清远市| 乌鲁木齐县| 青田县| 香格里拉县| 湘阴县| 二连浩特市| 高陵县| 翁牛特旗| 临沂市| 平塘县| 天水市| 河池市|