Spring Batch - สถาปัตยกรรม
ต่อไปนี้คือการแสดงแผนผังของสถาปัตยกรรมของ Spring Batch ตามที่แสดงในรูปสถาปัตยกรรมประกอบด้วยองค์ประกอบหลักสามส่วน ได้แก่Application, Batch Coreและ Batch Infrastructure.
Application - ส่วนประกอบนี้ประกอบด้วยงานทั้งหมดและโค้ดที่เราเขียนโดยใช้ Spring Batch framework
Batch Core - ส่วนประกอบนี้มีคลาส API ทั้งหมดที่จำเป็นในการควบคุมและเปิดใช้งาน Batch Job
Batch Infrastructure - ส่วนประกอบนี้ประกอบด้วยผู้อ่านนักเขียนและบริการที่ใช้โดยทั้งแอปพลิเคชันและส่วนประกอบหลักของแบทช์
ส่วนประกอบของ Spring Batch
ภาพประกอบต่อไปนี้แสดงส่วนประกอบต่างๆของ Spring Batch และวิธีการเชื่อมต่อซึ่งกันและกัน
งาน
ในแอปพลิเคชัน Spring Batch งานคือกระบวนการแบตช์ที่จะดำเนินการ ทำงานตั้งแต่ต้นจนจบโดยไม่หยุดชะงัก งานนี้แบ่งออกเป็นขั้นตอนเพิ่มเติม (หรืองานมีขั้นตอน)
เราจะกำหนดค่างานใน Spring Batch โดยใช้ไฟล์ XML หรือคลาส Java ต่อไปนี้คือการกำหนดค่า XML ของงานใน Spring Batch
<job id = "jobid">
<step id = "step1" next = "step2"/>
<step id = "step2" next = "step3"/>
<step id = "step3"/>
</job>
ชุดงานถูกกำหนดค่าภายในแท็ก <job> </job> มีแอตทริบิวต์ชื่อid. ภายในแท็กเหล่านี้เรากำหนดนิยามและลำดับขั้นตอน
Restartable - โดยทั่วไปเมื่องานกำลังดำเนินอยู่และเราพยายามเริ่มต้นใหม่อีกครั้งซึ่งถือเป็น restartและจะเริ่มต้นใหม่อีกครั้ง เพื่อหลีกเลี่ยงปัญหานี้คุณต้องตั้งค่าไฟล์restartable มูลค่าถึง false ดังแสดงด้านล่าง
<job id = "jobid" restartable = "false" >
</job>
ขั้นตอน
ก step เป็นส่วนอิสระของงานซึ่งมีข้อมูลที่จำเป็นในการกำหนดและดำเนินงาน (ส่วนของงาน)
ตามที่ระบุไว้ในแผนภาพแต่ละขั้นตอนประกอบด้วย ItemReader, ItemProcessor (ทางเลือก) และ ItemWriter A job may contain one or more steps.
ผู้อ่านนักเขียนและผู้ประมวลผล
อัน item reader อ่านข้อมูลในแอปพลิเคชัน Spring Batch จากแหล่งเฉพาะในขณะที่ไฟล์ item writer เขียนข้อมูลจากแอปพลิเคชัน Spring Batch ไปยังปลายทางเฉพาะ
อัน Item processorเป็นคลาสที่มีรหัสการประมวลผลซึ่งประมวลผลข้อมูลที่อ่านลงในชุดสปริง หากแอปพลิเคชันอ่าน"n" จากนั้นรหัสในโปรเซสเซอร์จะถูกเรียกใช้ในแต่ละเร็กคอร์ด
เมื่อไม่มีผู้อ่านและนักเขียนให้ a taskletทำหน้าที่เป็นโปรเซสเซอร์สำหรับ SpringBatch มันประมวลผลงานเดียวเท่านั้น ตัวอย่างเช่นหากเรากำลังเขียนงานด้วยขั้นตอนง่ายๆที่เราอ่านข้อมูลจากฐานข้อมูล MySQL และประมวลผลและเขียนลงในไฟล์ (แบน) ขั้นตอนของเราจะใช้ -
ก reader ซึ่งอ่านจากฐานข้อมูล MySQL
ก writer ซึ่งเขียนลงในไฟล์แบบแบน
ก custom processor ซึ่งประมวลผลข้อมูลตามความต้องการของเรา
<job id = "helloWorldJob">
<step id = "step1">
<tasklet>
<chunk reader = "mysqlReader" writer = "fileWriter"
processor = "CustomitemProcessor" ></chunk>
</tasklet>
</step>
</ job>
Spring Batch มีรายการ readers และ writers. การใช้คลาสที่กำหนดไว้ล่วงหน้าเหล่านี้เราสามารถกำหนดถั่วให้กับพวกเขาได้ เราจะหารือreaders และ writers ในรายละเอียดเพิ่มเติมในบทต่อ ๆ ไป
JobRepository
ที่เก็บงานใน Spring Batch ให้การดำเนินการสร้างดึงข้อมูลอัปเดตและลบ (CRUD) สำหรับการใช้งาน JobLauncher งานและขั้นตอน เราจะกำหนดที่เก็บงานในไฟล์ XML ดังที่แสดงด้านล่าง
<job-repository id = "jobRepository"/>
นอกจาก idมีตัวเลือกเพิ่มเติม (ไม่บังคับ) ให้เลือก ต่อไปนี้คือการกำหนดค่าของที่เก็บงานพร้อมตัวเลือกทั้งหมดและค่าดีฟอลต์
<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 - ในกรณีที่คุณไม่ต้องการคงวัตถุโดเมนของ Spring Batch ไว้ในฐานข้อมูลคุณสามารถกำหนดค่า jobRepository เวอร์ชันในหน่วยความจำดังที่แสดงด้านล่าง
<bean id = "jobRepository"
class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean ">
<property name = "transactionManager" ref = "transactionManager"/>
</bean>
JobLauncher
JobLauncher เป็นอินเทอร์เฟซที่เปิดใช้งาน Spring Batch ด้วยไฟล์ given set of parameters. SampleJoblauncher เป็นคลาสที่ใช้ JobLauncherอินเตอร์เฟซ. ต่อไปนี้คือการกำหนดค่า JobLauncher
<bean id = "jobLauncher"
class = "org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name = "jobRepository" ref = "jobRepository" />
</bean>
JobInstance
ก JobInstanceแสดงถึงการรันตรรกะของงาน มันถูกสร้างขึ้นเมื่อเราเรียกใช้งาน แต่ละอินสแตนซ์ของงานมีความแตกต่างกันตามชื่อของงานและพารามิเตอร์ที่ส่งผ่านไปยังงานนั้นขณะรัน
หากการดำเนินการ JobInstance ล้มเหลวคุณสามารถดำเนินการ JobInstance เดียวกันได้อีกครั้ง ดังนั้น JobInstance แต่ละงานสามารถมีการดำเนินการหลายงาน
JobExecution และ StepExecution
JobExecution และ StepExecution เป็นการแสดงการดำเนินการของงาน / ขั้นตอน ประกอบด้วยข้อมูลการรันของงาน / ขั้นตอนเช่นเวลาเริ่มต้น (ของงาน / ขั้นตอน) เวลาสิ้นสุด (ของงาน / ขั้นตอน)