Spring Batch - Mimari

Aşağıda, Spring Batch mimarisinin şematik gösterimi verilmiştir. Şekilde görüldüğü gibi mimari üç ana bileşen içerir:Application, Batch Core, ve Batch Infrastructure.

Application - Bu bileşen, Spring Batch çerçevesini kullanarak yazdığımız tüm işleri ve kodu içerir.

Batch Core - Bu bileşen, bir Toplu İşi kontrol etmek ve başlatmak için gereken tüm API sınıflarını içerir.

Batch Infrastructure - Bu bileşen, hem uygulama hem de Batch çekirdek bileşenleri tarafından kullanılan okuyucuları, yazarları ve hizmetleri içerir.

Spring Batch Bileşenleri

Aşağıdaki çizim, Spring Batch'in farklı bileşenlerini ve bunların birbirine nasıl bağlandığını gösterir.

İş

Bir Spring Batch uygulamasında, bir iş, yürütülecek toplu işlemdir. Baştan sona kesintisiz çalışır. Bu iş ayrıca adımlara bölünmüştür (veya bir iş adımlar içerir).

Bir XML dosyası veya Java sınıfı kullanarak Spring Batch'te bir işi yapılandıracağız. Spring Batch'te bir İşin XML yapılandırması aşağıdadır.

<job id = "jobid"> 
   <step id = "step1" next = "step2"/> 
   <step id = "step2" next = "step3"/> 
   <step id = "step3"/> 
</job>

<job> </job> etiketleri içinde bir Toplu iş yapılandırılır. Adlı bir özniteliğe sahiptirid. Bu etiketler içerisinde adımların tanımını ve sırasını tanımlıyoruz.

Restartable - Genel olarak, bir iş çalışırken ve yeniden başlatmaya çalıştığımızda, restartve yeniden başlayacak. Bundan kaçınmak için,restartable değer false Aşağıda gösterildiği gibi.

<job id = "jobid" restartable = "false" >

</job>

Adım

Bir step işin (işin) tanımlanması ve yürütülmesi için gerekli bilgileri içeren bir işin bağımsız bir parçasıdır.

Diyagramda belirtildiği gibi, her adım bir ItemReader, ItemProcessor (isteğe bağlı) ve bir ItemWriter'dan oluşur. A job may contain one or more steps.

Okuyucular, Yazarlar ve İşlemciler

Bir item reader Verileri belirli bir kaynaktan bir Spring Batch uygulamasına okur, oysa bir item writer Spring Batch uygulamasından belirli bir hedefe veri yazar.

Bir Item processorOkunan verileri yay yığınına işleyen işlem kodunu içeren bir sınıftır. Uygulama okursa"n" kayıtlar, ardından işlemcideki kod her kayıtta çalıştırılacaktır.

Okur ve yazar verilmediğinde, taskletSpringBatch için bir işlemci görevi görür. Yalnızca tek bir görevi işler. Örneğin, MySQL veritabanından verileri okuyup işleyip bir dosyaya (düz) yazdığımız, içinde basit bir adım olan bir iş yazıyorsak, adımımız şunu kullanır -

  • Bir reader MySQL veritabanından okur.

  • Bir writer düz bir dosyaya yazar.

  • Bir custom processor Verileri isteğimize göre işler.

<job id = "helloWorldJob"> 
   <step id = "step1"> 
      <tasklet> 
         <chunk reader = "mysqlReader" writer = "fileWriter" 
            processor = "CustomitemProcessor" ></chunk> 
      </tasklet> 
   </step> 
</ job>

Spring Batch uzun bir liste sağlar readers ve writers. Bu önceden tanımlanmış sınıfları kullanarak onlar için fasulye tanımlayabiliriz. Tartışacağızreaders ve writers ilerleyen bölümlerde daha ayrıntılı olarak.

İş Havuzu

Spring Batch'teki bir İş deposu, JobLauncher, Job ve Step uygulamaları için Oluşturma, Alma, Güncelleme ve Silme (CRUD) işlemleri sağlar. Aşağıda gösterildiği gibi bir XML dosyasında bir iş havuzu tanımlayacağız.

<job-repository id = "jobRepository"/>

Ek olarak idbazı başka seçenekler (isteğe bağlı) mevcuttur. Aşağıda, tüm seçenekler ve bunların varsayılan değerleri ile iş havuzunun yapılandırması yer almaktadır.

<job-repository id = "jobRepository" 
   data-source = "dataSource" 
   transaction-manager = "transactionManager" 
   isolation-level-for-create = "SERIALIZABLE" 
   table-prefix = "BATCH_" 
   max-varchar-length = "1000"/>

In-Memory Repository - Veritabanında Spring Batch'in etki alanı nesnelerini kalıcı hale getirmek istemiyorsanız, jobRepository'nin bellek içi sürümünü aşağıda gösterildiği gibi yapılandırabilirsiniz.

<bean id = "jobRepository" 
   class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean ">
   <property name = "transactionManager" ref = "transactionManager"/>
</bean>

JobLauncher

JobLauncher, Spring Batch işini given set of parameters. SampleJoblauncher uygulayan sınıftır JobLauncherarayüz. JobLauncher'ın yapılandırması aşağıdadır.

<bean id = "jobLauncher" 
   class = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
   <property name = "jobRepository" ref = "jobRepository" /> 
</bean>

JobInstance

Bir JobInstancebir işin mantıksal çalışmasını temsil eder; bir iş yürüttüğümüzde yaratılır. Her iş örneği, işin adına ve çalışırken ona iletilen parametrelere göre farklılaştırılır.

Bir JobInstance yürütmesi başarısız olursa, aynı JobInstance yeniden yürütülebilir. Dolayısıyla, her JobInstance birden fazla iş yürütmesine sahip olabilir.

JobExecution ve StepExecution

JobExecution ve StepExecution, bir işin / adımın yürütülmesinin temsilidir. Başlangıç ​​zamanı (iş / adım), bitiş zamanı (iş / adım) gibi işin / adımın çalıştırma bilgilerini içerirler.