workflow - Different combination of Spring batch steps -
i working on project going use spring batch , spring integration creating workflow system. workflow system should able read messages queues job requests clients , depending on job requests type need call 7-8 systems.
each system reads input files location (usually centralized storage system input files stored submitted clients), process , pass next system , should able give response clients, success if processed systems , failed if system fails process file , if fails client should able restart failed job step failed.
i going add each system step in spring batch , using spring integration going model systems particular flow - e.g. ftp files, send jms/smapi request, receive jms response, ftp files back. etc.
my questions are:
- is correct approach?
- if "yes", performance tuning considerations while using spring batch , spring integration?
- since systems not going called in same order time, how write possible combinations using spring batch potential spring batch jobs?
question 1: using spring-integration , spring-batch idea.
question 2: spring-batch, have lot of options scale , therfore improve performance. can launch whole jobs in parallel, can execute steps in parallel, can execute chunks in parallel... basic questions are:
- where bottleneck
- where parallelisation improves performance
question 3: basically, spring-batch not workflow system. supports jobs fixed order of steps.
option 1: model each system in own job ("jobsystema", "jobsystemb"). that, implement logic of flow in "integration" layer , start new job every system in correct order.
option 2: if have fixed number of possible of flows like
flow 1: step (system a) step b (system b) step c (system c) flow 2: step (system a) step c (system c) step b (system b)
you define job every possible "flow" , implement call specific system jobs "stepjob" calls specific "jobsystem"-job mentioned under option 1; like
jobflow1 step1 {jobstep call jobsystema} step2 {jobstep call jobsystemb} step3 {jobstep call jobsystemc} jobflow2 step1 {jobstep call jobsystema} step2 {jobstep call jobsystemc} step3 {jobstep call jobsystemb}
option 3: if define jobs programmatically fluent api of springbatch, free create therefore define job @ runtime.
Comments
Post a Comment