91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 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

琼中| 海口市| 石渠县| 南召县| 宿州市| 偏关县| 页游| 都安| 获嘉县| 新营市| 宁国市| 墨江| 井冈山市| 兴安盟| 虞城县| 自贡市| 中西区| 木里| 叶城县| 阿尔山市| 孙吴县| 东台市| 通许县| 青岛市| 积石山| 遂平县| 凤台县| 石泉县| 高州市| 金湖县| 班玛县| 烟台市| 舟曲县| 松滋市| 竹北市| 铜鼓县| 安多县| 肥西县| 宁乡县| 剑川县| 临猗县|