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

Spring batch批處理框架

 更新時間:2017年04月02日 18:32:56   作者:weiker12  
本文主要介紹了Spring batch批處理框架的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧

spring batch框架的簡介

批處理任務(wù)是大多數(shù)IT項目的一個重要組成部分,批處理在業(yè)務(wù)系統(tǒng)中負責(zé)處理海量的數(shù)據(jù),無須人工干預(yù)就能夠自動高效的進行復(fù)雜的數(shù)據(jù)分析和處理。批處理會定期讀入批量數(shù)據(jù),經(jīng)過相應(yīng)的業(yè)務(wù)處理進行歸檔的業(yè)務(wù)操作,批處理的特征是自動執(zhí)行,處理的數(shù)據(jù)量大,定時執(zhí)行。將整個批處理的流程按邏輯劃分可以分為讀數(shù)據(jù),處理數(shù)據(jù)和寫數(shù)據(jù)。

spring batch對批處理本身的特性進行了抽象,將批處理作業(yè)抽象為job和job step,將批處理的處理過程分解為數(shù)據(jù)讀,數(shù)據(jù)處理和數(shù)據(jù)寫。

將異常處理機制分為跳過,重啟和重試。將作業(yè)的分區(qū)分為多線程,并行遠程和分區(qū)。

spring batch不是一個調(diào)度框架,但需要調(diào)度框架來配合完成批處理任務(wù),它只關(guān)注批處理相關(guān)的任務(wù)問題,但沒有提供相應(yīng)的調(diào)度功能,如果需要使用調(diào)度功能,需要使用調(diào)度框架,這里介紹一個比較常用的調(diào)度框架quartz,可以配合spring batch完成批處理的任務(wù)調(diào)度。

spring batch的架構(gòu)分為三層:基礎(chǔ)架構(gòu)層,核心層和應(yīng)用層。應(yīng)用層包含所有的批處理作業(yè),核心層主要提供JobLauncher、Job和step,基礎(chǔ)架構(gòu)層主要提供通用的讀(ItemReader)、寫(ItemWriter)和服務(wù)處理(如:RetryTemplate重試模板;RepeatTemplate:重復(fù)模板),Spring

batch的三層架構(gòu)體系使得Spring batch框架可以在不同的層級進行擴展,避免不同層級之間的相互影響。

job的介紹

批處理的作業(yè)是由一組step組成,同時job本身也是配置文件的頂級元素。每個作業(yè)都有自己的名字,可以定義step的執(zhí)行順序,以及定義作業(yè)是否可以重啟。job執(zhí)行的時候會生成一個job instance(作業(yè)實例)和一個job execution(作業(yè)執(zhí)行器)。job instance包含執(zhí)行job期間產(chǎn)生的數(shù)據(jù)以及job執(zhí)行的狀態(tài)信息;1個job可以對應(yīng)多個job instance,1個job instance可以對應(yīng)多個job execution。

job的配置的主要屬性有id(作業(yè)的唯一標識)、job-repository(定義作業(yè)倉庫)、incrementer(作業(yè)參數(shù)遞增器)、restartable(作業(yè)是否重啟)、parent(指定該作業(yè)的父作業(yè))、abstract(定義作業(yè)是否抽象)。

step的介紹

step表示作業(yè)中一個完整的步驟,一個job可以由一個或者多個step組成,step主要負責(zé)批處理運行過程中的主要業(yè)務(wù)邏輯的實現(xiàn)。每次step執(zhí)行的時候會生成一個或者多個job execution,每次任務(wù)執(zhí)行失敗的時候,等到下次重新執(zhí)行該任務(wù)的時候就會為該任務(wù)的step重新生成一個step execution。

step可以配置tasklet、partition、job、flow。

step一般主要配置itemReader、itemProcess和itemWriter來完成批處理的業(yè)務(wù)邏輯處理。

job repository的介紹

job repository主要用來存儲job運行期間的元數(shù)據(jù)(這些元數(shù)據(jù)包括job instance、job execution、job parameters、step execution、execution context等數(shù)據(jù))。

spring batch框架進行元數(shù)據(jù)管理的時候共有9張表,其中有3張表(后綴是SEQ)用來分配主鍵的,這9張表分別是

BATCH_JOB_INSTANCE:作業(yè)實例表

BATCH_JOB_EXECUTION:作業(yè)執(zhí)行器表

BATCH_JOB_EXECUTION_PARAMS:作業(yè)參數(shù)表

BATCH_STEP_EXECUTION:作業(yè)步執(zhí)行器表

BATCH_JOB_EXECUTION_CONTEXT:作業(yè)執(zhí)行上下文表

BATCH_STEP_EXECUTION_CONTEXT:作業(yè)步執(zhí)行上下文表

BATCH_JOB_EXECUTION_SEQ:作業(yè)執(zhí)行器序列表

BATCH_STEP_EXECUTION_SEQ:作業(yè)步序列表

BATCH_JOB_SEQ:作業(yè)序列表

itemReader的介紹

itemReader是Step中對資源的讀處理,Spring batch框架提供了大量的直接可用的讀組件可以快速的完成批處理應(yīng)用的開發(fā)和構(gòu)建,同時框架也提供了較好的復(fù)用和擴展組件,開發(fā)者可以自定義實現(xiàn)。

ListItemReader:讀取List數(shù)據(jù),只能讀一次。

ItemReaderAdapter:ItemReader適配器,可以復(fù)用現(xiàn)有的讀操作。

FlatFileItemReader:讀Flat類型文件。

StaxEventItemReader:讀XML類型文件。

JdbcCursorItemReader:基于JDBC游標方式讀數(shù)據(jù)庫。

HibernateCursorItemReader:基于hibernate游標方式讀取數(shù)據(jù)庫。

StoredProcedureItemReader:基于存儲過程讀取數(shù)據(jù)庫。

IbatisPagingItemReader:基于Ibatis分頁讀取數(shù)據(jù)庫。

JpaPagingItemReader:基于jpa方式分頁讀取數(shù)據(jù)庫。

JdbcPagingItemReader:基于jdbc方式分頁讀取數(shù)據(jù)庫。

HibernatePagingItemReader:基于Hibernate方式分頁讀取數(shù)據(jù)庫。

JmsItemReader:讀取jms隊列。

IteratorItemReader:迭代方式的讀組件。

MultiResourceItemReader:多文件讀取組件。

MongoItemReader:基于分布式存儲MongoDB讀組件。

Neo4jItemReader:面向網(wǎng)格數(shù)據(jù)庫Neo4j讀組件。

ResourcesItemReader:基于批量資源的讀組件。

AmqpItemReader:讀取AMQP隊列組件。

RepositoryItemReader:基于Spring Data的讀組件。

itemProcess的介紹

itemProcess階段表示對讀取數(shù)據(jù)進行處理,開發(fā)者可以在這里面實現(xiàn)自己的業(yè)務(wù)操作。

CompositeItemProcessor:組合處理器,可以封裝多個業(yè)務(wù)處理服務(wù)。

ItemProcessorAdapter:適配器,可以復(fù)用現(xiàn)有的業(yè)務(wù)處理服務(wù)。

PassThroughItemProcessor:不做業(yè)務(wù)處理,直接返回讀取數(shù)據(jù)。

ValidatingItemProcessor:數(shù)據(jù)校驗處理器,支持對數(shù)據(jù)的校驗,如果校驗不通過可以進行過濾或者跳過skip的方式來處理記錄。

itemWriter的介紹

itemWriter是step中對資源的寫處理,Spring batch框架提供了大量的直接可用的寫組件可以快速的完成批處理應(yīng)用的開發(fā)和構(gòu)建,同時框架也提供了較好的復(fù)用和擴展組件,開發(fā)者可以自定義實現(xiàn)。

FlatFileItemWriter:寫flat類型文件。

MultiResourceItemWriter:多文件寫組件。

StaxEventItemWriter:寫XML類型文件。

AmqpItemWriter:寫AMQP類型消息。

ClassifierCompositeItemWriter:根據(jù)Classifier路由不同的Item到特定的ItemWriter處理。

HibernateItemWriter:基于Hibernate方式寫數(shù)據(jù)庫。

IbatisBatchItemWriter:基于Ibatis方式寫數(shù)據(jù)庫。

ItemWriterAdapter:適配器,可以復(fù)用現(xiàn)有的寫服務(wù)。

JdbcBatchItemWriter:基于JDBC方式寫數(shù)據(jù)庫。

JmsItemWriter:寫JMS隊列。

JpaItemWriter:基于jpa方式寫數(shù)據(jù)庫。

GemfireItemWriter:基于分布式數(shù)據(jù)庫Gemfire的寫組件。

SpELMappingGemfireItemWriter:基于spring表達式語言寫分布式數(shù)據(jù)庫Gemfire的組件。

MimeMessageItemWriter:發(fā)送郵件的寫組件。

MongoItemWriter:基于分布式文件存儲數(shù)據(jù)庫MongoDB寫組件。

Neo4jItemWriter:面向網(wǎng)絡(luò)數(shù)據(jù)庫Neo4j的讀組件。

PropertyExtractingDelegatingItemWriter:屬性抽取代理寫組件。

RepositoryItemWriter:基于Spring Data的寫組件。

SimpleMailMessageItemWriter:發(fā)送郵件的寫組件。

CompositeItemWriter:條目寫的組合模式,支持組裝多個ItemWriter。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • java 中JXL操作Excel實例詳解

    java 中JXL操作Excel實例詳解

    這篇文章主要介紹了java 中JXL操作Excel實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • java實現(xiàn)文件導(dǎo)入導(dǎo)出

    java實現(xiàn)文件導(dǎo)入導(dǎo)出

    這篇文章主要介紹了java實現(xiàn)文件導(dǎo)入導(dǎo)出的方法和具體示例代碼,非常的簡單實用,有需要的小伙伴可以參考下
    2016-04-04
  • 詳解使用Spring Cloud Consul實現(xiàn)服務(wù)的注冊和發(fā)現(xiàn)

    詳解使用Spring Cloud Consul實現(xiàn)服務(wù)的注冊和發(fā)現(xiàn)

    這篇文章主要介紹了詳解使用Spring Cloud Consul實現(xiàn)服務(wù)的注冊和發(fā)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Spring Boot整合Spring Data JPA過程解析

    Spring Boot整合Spring Data JPA過程解析

    這篇文章主要介紹了Spring Boot整合Spring Data JPA過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • JDBC的基本操作與Statement和PreparedStateMent使用區(qū)別分析

    JDBC的基本操作與Statement和PreparedStateMent使用區(qū)別分析

    這篇文章主要介紹了JDBC的基本操作與Statement和PreparedStateMent使用區(qū)別,Java Database Connectivity,它是代表一組獨立于任何數(shù)據(jù)庫管理系統(tǒng)(DBMS)的API,聲明在java.sql與javax.sql包中,是SUN(現(xiàn)在Oracle)提供的一組接口規(guī)范
    2023-04-04
  • 詳解如何在Java項目中實現(xiàn)信號的連續(xù)接收

    詳解如何在Java項目中實現(xiàn)信號的連續(xù)接收

    在Java項目中,信號的連續(xù)接收是一項重要的任務(wù),特別是在處理異步事件或者需要對外部事件做出響應(yīng)時,本篇博客將介紹如何在Java項目中實現(xiàn)信號的連續(xù)接收,包括信號的監(jiān)聽、處理和停止等步驟,需要的朋友可以參考下
    2023-11-11
  • 如何解決@NotBlank不生效的問題

    如何解決@NotBlank不生效的問題

    這篇文章主要介紹了如何解決@NotBlank不生效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • springboot集成screw反向生成數(shù)據(jù)庫說明文檔

    springboot集成screw反向生成數(shù)據(jù)庫說明文檔

    screw是一個一鍵式生成數(shù)據(jù)庫文檔的開源工具包,目前screw可以生成word、md和html格式類的文檔,本文主要來講講如何通過screw反向生成數(shù)據(jù)庫說明文檔,感興趣的可以了解下
    2025-01-01
  • 使用jenkins部署springboot項目的方法步驟

    使用jenkins部署springboot項目的方法步驟

    這篇文章主要介紹了使用jenkins部署springboot項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 關(guān)于Intellij IDEA中的Version Control問題

    關(guān)于Intellij IDEA中的Version Control問題

    這篇文章主要介紹了Intellij IDEA中的Version Control問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11

最新評論

安义县| 垣曲县| 巩留县| 萨嘎县| 崇州市| 平顺县| 金华市| 香格里拉县| 邵东县| 金川县| 靖远县| 开原市| 宝清县| 丹东市| 奈曼旗| 彭阳县| 汝州市| 铜陵市| 武冈市| 海城市| 富蕴县| 平邑县| 岢岚县| 雅安市| 扶沟县| 济源市| 循化| 安国市| 丰镇市| 彭州市| 永吉县| 榆林市| 渑池县| 牙克石市| 高陵县| 石屏县| 福鼎市| 岫岩| 仁怀市| 临夏市| 杨浦区|