±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËÅú´¦ÀíµäÐͳ¡¾°¡¢Åú´¦Àí¹Ø¼üÁìÓòÄ£Ðͼ°¹Ø¼ü¼Ü¹¹¡¢ÊµÏÖ×÷ÒµµÄ½¡×³ÐÔÓëÀ©Õ¹ÐÔ¡¢Åú´¦Àí¿ò¼ÜµÄ²»×ãÓëÔöÇ¿µÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ¼«¿Íʱ¼ä£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
Èç½ñ΢·þÎñ¼Ü¹¹ÌÖÂÛµÄÈç»ðÈçݱ¡£µ«ÔÚÆóÒµ¼Ü¹¹Àï³ýÁË´óÁ¿µÄOLTP½»Ò×Í⣬»¹´æÔÚº£Á¿µÄÅú´¦Àí½»Òס£ÔÚÖîÈçÒøÐеĽðÈÚ»ú¹¹ÖУ¬Ã¿ÌìÓÐ3-4Íò±ÊµÄÅú´¦Àí×÷ÒµÐèÒª´¦Àí¡£Õë¶ÔOLTP£¬Òµ½çÓдóÁ¿µÄ¿ªÔ´¿ò¼Ü¡¢ÓÅÐãµÄ¼Ü¹¹Éè¼Æ¸øÓèÖ§³Å£»µ«Åú´¦ÀíÁìÓòµÄ¿ò¼ÜÈ··ïë÷ë½Ç¡£ÊÇʱºòºÍÎÒÃÇÒ»ÆðÀ´Á˽âÏÂÅú´¦ÀíµÄÊÀ½çÄÄЩÓÅÐãµÄ¿ò¼ÜºÍÉè¼ÆÁË£¬½ñÌìÎÒ½«ÒÔSpring
BatchΪÀý£¬ºÍ´ó¼ÒÒ»ÆðÌ½ÃØÅú´¦ÀíµÄÊÀ½ç¡£
¡¤³õʶÅú´¦ÀíµäÐͳ¡¾°
¡¤Ì½ÃØÁìÓòÄ£Ðͼ°¹Ø¼ü¼Ü¹¹
¡¤ÊµÏÖ×÷Òµ½¡×³ÐÔÓëÀ©Õ¹ÐÔ
¡¤Åú´¦Àí¿ò¼ÜµÄ²»×ãÓëÔöÇ¿
Åú´¦ÀíµäÐÍÒµÎñ³¡¾°
¶ÔÕËÊǵäÐ͵ÄÅú´¦ÀíÒµÎñ´¦Àí³¡¾°£¬¸÷¸ö½ðÈÚ»ú¹¹µÄÍùÀ´ÒµÎñºÍ¿çÖ÷»úϵͳµÄÒµÎñ¶¼»áÉæ¼°µ½¶ÔÕ˵Ĺý³Ì£¬Èç´óС¶îÖ§¸¶¡¢ÒøÁª½»Òס¢ÈËÐÐÍùÀ´¡¢ÏÖ½ð¹ÜÀí¡¢POSÒµÎñ¡¢ATMÒµÎñ¡¢Ö¤È¯¹«Ë¾×ʽðÕË»§¡¢Ö¤È¯¹«Ë¾Óë֤ȯ½áË㹫˾¡£

ÏÂÃæÊÇijÐÐÍøÒøµÄ²¿·ÖÈÕÖÕÅÜÅúʵÀý³¡¾°ÐèÇó¡£

Éæ¼°µ½µÄÐèÇóµã°üÀ¨£º
1.ÅúÁ¿µÄÿ¸öµ¥Ôª¶¼ÐèÒª´íÎó´¦ÀíºÍ»ØÍË£»
2.ÿ¸öµ¥ÔªÔÚ²»Í¬Æ½Ì¨ÖÐÔËÐУ»
3.ÐèÒªÓзÖÖ§Ñ¡Ôñ£»
4.ÿ¸öµ¥ÔªÐèÒª¼à¿ØºÍ»ñÈ¡µ¥Ôª´¦ÀíÈÕÖ¾£»
5.Ìṩ¶àÖÖ´¥·¢¹æÔò£¬°´ÈÕÆÚ£¬ÈÕÀú£¬ÖÜÆÚ´¥·¢£»
³ý´ËÖ®ÍâµäÐ͵ÄÅú´¦ÀíÊÊÓÃÓÚÈçϵÄÒµÎñ³¡¾°£º
1.¶¨ÆÚÌá½»Åú´¦ÀíÈÎÎñ£¨ÈÕÖÕ´¦Àí£©
2.²¢ÐÐÅú´¦Àí£º²¢Ðд¦ÀíÈÎÎñ
3.ÆóÒµÏûÏ¢Çý¶¯´¦Àí
4.´ó¹æÄ£µÄ²¢Ðд¦Àí
5.ÊÖ¶¯»ò¶¨Ê±ÖØÆô
6.°´Ë³Ðò´¦ÀíÒÀÀµµÄÈÎÎñ(¿ÉÀ©Õ¹Îª¹¤×÷Á÷Çý¶¯µÄÅú´¦Àí)
7.²¿·Ö´¦Àí£ººöÂԼǼ(ÀýÈçÔڻعöʱ)
8.ÍêÕûµÄÅú´¦ÀíÊÂÎñ
ÓëOLTPÀàÐͽ»Òײ»Í¬£¬Åú´¦Àí×÷ÒµÁ½¸öµäÐÍÌØÕ÷ÊÇÅúÁ¿Ö´ÐÐÓë×Ô¶¯Ö´ÐУ¨ÐèÒªÎÞÈËÖµÊØ£©£ºÇ°ÕßÄܹ»´¦Àí´óÅúÁ¿Êý¾ÝµÄµ¼Èë¡¢µ¼³öºÍÒµÎñÂß¼¼ÆË㣻ºóÕßÎÞÐèÈ˹¤¸ÉÔ¤£¬Äܹ»×Ô¶¯»¯Ö´ÐÐÅúÁ¿ÈÎÎñ¡£

ÔÚ¹Ø×¢Æä»ù±¾¹¦ÄÜÖ®Í⣬»¹ÐèÒª¹Ø×¢ÈçÏµļ¸µã£º
½¡×³ÐÔ£º²»»áÒòΪÎÞЧÊý¾Ý»ò´íÎóÊý¾Ýµ¼Ö³ÌÐò±ÀÀ££»
¿É¿¿ÐÔ£ºÍ¨¹ý¸ú×Ù¡¢¼à¿Ø¡¢ÈÕÖ¾¼°Ïà¹ØµÄ´¦Àí²ßÂÔ£¨ÖØÊÔ¡¢Ìø¹ý¡¢ÖØÆô£©ÊµÏÖÅú×÷ÒµµÄ¿É¿¿Ö´ÐУ»
À©Õ¹ÐÔ£ºÍ¨¹ý²¢·¢»òÕß²¢Ðм¼ÊõʵÏÖÓ¦ÓõÄ×ÝÏòºÍºáÏòÀ©Õ¹£¬Âú×㺣Á¿Êý¾Ý´¦ÀíµÄÐÔÄÜÐèÇó£»
¿àÓÚÒµ½çÕæµÄȱÉٱȽϺõÄÅú´¦Àí¿ò¼Ü£¬Spring BatchÊÇÒµ½çĿǰΪÊý²»¶àµÄÓÅÐãÅú´¦Àí¿ò¼Ü£¨JavaÓïÑÔ¿ª·¢£©£¬SpringSourceºÍAccenture£¨°£ÉÕÜ£©¹²Í¬¹±Ï×ÁËÖǻۡ£

AccentureÔÚÅú´¦Àí¼Ü¹¹ÉÏÓÐ×ŷḻµÄ¹¤Òµ¼¶±ðµÄ¾Ñ飬¹±Ï×ÁË֮ǰרÓõÄÅú´¦ÀíÌåϵ¿ò¼Ü£¨ÕâЩ¿ò¼ÜÀú¾ÊýÊ®ÄêÑз¢ºÍʹÓã¬ÎªSpring
BatchÌṩÁË´óÁ¿µÄ²Î¿¼¾Ñ飩¡£
SpringSourceÔòÓÐ×ÅÉî¿ÌµÄ¼¼ÊõÈÏÖªºÍSpring¿ò¼Ü±à³ÌÄ£ÐÍ£¬Í¬Ê±½è¼øÁËJCL(Job
Control Language)ºÍCOBOLµÄÓïÑÔÌØÐÔ¡£2013ÄêJSR-352½«Åú´¦ÀíÄÉÈë¹æ·¶Ìåϵ£¬²¢±»°üº¬ÔÚÁËJEE7Ö®ÖС£ÕâÒâζ×Å£¬ËùÓеÄJEE7Ó¦Ó÷þÎñÆ÷¶¼»áÓÐÅú´¦ÀíµÄÄÜÁ¦£¬Ä¿Ç°µÚÒ»¸öʵÏִ˹淶µÄÓ¦Ó÷þÎñÆ÷ÊÇGlassfish
4¡£µ±È»Ò²¿ÉÒÔÔÚJava SEÖÐʹÓá£

µ«×îΪ¹Ø¼üµÄÒ»µãÊÇ£ºJSR-352¹æ·¶´óÁ¿½è¼øÁËSpring Batch¿ò¼ÜµÄÉè¼ÆË¼Â·,´ÓÉÏͼÖеĺËÐÄÄ£Ðͺ͸ÅÄîÖпÉÒÔ¿´³ö¾¿¾¹£¬ºËÐĵĸÅÄîÄ£ÐÍÍêȫһÖ¡£ÍêÕûµÄJSR-252¹æ·¶¿ÉÒÔ´Óhttps://jcp.org/aboutJava/communityprocess/final/jsr352/index.htmlÏÂÔØ¡£
ͨ¹ýSpring Batch¿ò¼Ü¿ÉÒÔ¹¹½¨³öÇáÁ¿¼¶µÄ½¡×³µÄ²¢Ðд¦ÀíÓ¦ÓÃ,Ö§³ÖÊÂÎñ¡¢²¢·¢¡¢Á÷³Ì¡¢¼à¿Ø¡¢×ÝÏòºÍºáÏòÀ©Õ¹,ÌṩͳһµÄ½Ó¿Ú¹ÜÀíºÍÈÎÎñ¹ÜÀí¡£

¿ò¼ÜÌṩÁËÖîÈçÒÔϵĺËÐÄÄÜÁ¦£¬Èôó¼Ò¸ü¹Ø×¢ÔÚÒµÎñ´¦ÀíÉÏ¡£¸üÊÇÌṩÁËÈçϵķḻÄÜÁ¦£º
1.Ã÷È··ÖÀëÅú´¦ÀíµÄÖ´Ðл·¾³ºÍÓ¦ÓÃ
2.½«Í¨ÓúËÐĵķþÎñÒÔ½Ó¿ÚÐÎʽÌṩ
3.Ìṩ¡°¿ªÏä¼´Óá± µÄ¼òµ¥µÄĬÈϵĺËÐÄÖ´ÐнӿÚ
4.ÌṩSpring¿ò¼ÜÖÐÅäÖá¢×Ô¶¨Òå¡¢ºÍÀ©Õ¹·þÎñ
5.ËùÓÐĬÈÏʵÏֵĺËÐÄ·þÎñÄܹ»ÈÝÒ׵ı»À©Õ¹ÓëÌæ»»£¬²»»áÓ°Ïì»ù´¡²ã
6.Ìṩһ¸ö¼òµ¥µÄ²¿Êðģʽ£¬Ê¹ÓÃMaven½øÐбàÒë
Åú´¦Àí¹Ø¼üÁìÓòÄ£Ðͼ°¹Ø¼ü¼Ü¹¹
ÏÈÀ´¸öHello WorldʾÀý£¬Ò»¸öµäÐ͵ÄÅú´¦Àí×÷Òµ¡£

µäÐ͵ÄÒ»¸ö×÷Òµ·ÖΪ3²¿·Ö£º×÷Òµ¶Á¡¢×÷Òµ´¦Àí¡¢×÷ҵд£¬Ò²ÊǵäÐ͵ÄÈý²½Ê½¼Ü¹¹¡£Õû¸öÅú´¦Àí¿ò¼Ü»ù±¾ÉÏÎ§ÈÆRead¡¢Process¡¢WriterÀ´´¦Àí¡£³ý´ËÖ®Í⣬¿ò¼ÜÌṩÁË×÷Òµµ÷¶ÈÆ÷¡¢×÷Òµ²Ö¿â£¨ÓÃÒÔ´æ·ÅJobµÄÔªÊý¾ÝÐÅÏ¢£¬Ö§³ÖÄÚ´æ¡¢DBÁ½ÖÖģʽ£©¡£
ÍêÕûµÄÁìÓò¸ÅÄîÄ£ÐͲμÓÏÂͼ£º

Job Launcher£¨×÷Òµµ÷¶ÈÆ÷£©ÊÇSpring Batch¿ò¼Ü»ù´¡ÉèÊ©²ãÌṩµÄÔËÐÐJobµÄÄÜÁ¦¡£Í¨¹ý¸ø¶¨µÄJobÃû³ÆºÍ×÷Job
Parameters£¬¿ÉÒÔͨ¹ýJob LauncherÖ´ÐÐJob¡£
ͨ¹ýJob Launcher¿ÉÒÔÔÚJava³ÌÐòÖе÷ÓÃÅú´¦ÀíÈÎÎñ£¬Ò²¿ÉÒÔÔÚͨ¹ýÃüÁîÐлòÕ߯äËü¿ò¼Ü£¨È綨ʱµ÷¶È¿ò¼ÜQuartz£©Öе÷ÓÃÅú´¦ÀíÈÎÎñ¡£
Job RepositoryÀ´´æ´¢JobÖ´ÐÐÆÚµÄÔªÊý¾Ý£¨ÕâÀïµÄÔªÊý¾ÝÊÇÖ¸Job Instance¡¢Job
Execution¡¢Job Parameters¡¢Step Execution¡¢Execution
ContextµÈÊý¾Ý£©£¬²¢ÌṩÁ½ÖÖĬÈÏʵÏÖ¡£
Ò»ÖÖÊÇ´æ·ÅÔÚÄÚ´æÖУ»ÁíÒ»ÖÖ½«ÔªÊý¾Ý´æ·ÅÔÚÊý¾Ý¿âÖС£Í¨¹ý½«ÔªÊý¾Ý´æ·ÅÔÚÊý¾Ý¿âÖУ¬¿ÉÒÔËæÊ±¼à¿ØÅú´¦ÀíJobµÄÖ´ÐÐ״̬¡£JobÖ´Ðнá¹ûÊdzɹ¦»¹ÊÇʧ°Ü£¬²¢ÇÒʹµÃÔÚJobʧ°ÜµÄÇé¿öÏÂÖØÐÂÆô¶¯Job³ÉΪ¿ÉÄÜ¡£Step±íʾ×÷ÒµÖеÄÒ»¸öÍêÕû²½Ö裬һ¸öJob¿ÉÒÔÓÐÒ»¸ö»òÕß¶à¸öStep×é³É¡£
Åú´¦Àí¿ò¼ÜÔËÐÐÆÚµÄÄ£ÐÍÒ²·Ç³£¼òµ¥£º

Job Instance£¨×÷ҵʵÀý£©ÊÇÒ»¸öÔËÐÐÆÚµÄ¸ÅÄJobÿִÐÐÒ»´Î¶¼»áÉæ¼°µ½Ò»¸öJob Instance¡£
Job InstanceÀ´Ô´¿ÉÄÜÓÐÁ½ÖÖ£ºÒ»ÖÖÊǸù¾ÝÉèÖõÄJob Parameters´ÓJob Repository£¨×÷Òµ²Ö¿â£©Öлñȡһ¸ö£»Èç¹û¸ù¾ÝJob
Parameters´ÓJob RepositoryûÓлñÈ¡Job Instance£¬Ôòд´½¨Ò»¸öеÄJob
Instance¡£
Job Execution±íʾJobÖ´Ðеľä±ú£¬Ò»´ÎJobµÄÖ´ÐпÉÄܳɹ¦Ò²¿ÉÄÜʧ°Ü¡£Ö»ÓÐJobÖ´Ðгɹ¦ºó£¬¶ÔÓ¦µÄJob
Instance²Å»á±»Íê³É¡£Òò´ËÔÚJobÖ´ÐÐʧ°ÜµÄÇé¿öÏ£¬»áÓÐÒ»¸öJob Instance¶ÔÓ¦¶à¸öJob
ExecutionµÄ³¡¾°·¢Éú¡£
×ܽáÏÂÅú´¦ÀíµÄµäÐ͸ÅÄîÄ£ÐÍ£¬ÆäÉè¼Æ·Ç³£¾«¼òµÄÊ®¸ö¸ÅÄÍêÕûÖ§³ÅÁËÕû¸ö¿ò¼Ü¡£

JobÌṩµÄºËÐÄÄÜÁ¦°üÀ¨×÷ÒµµÄ³éÏóÓë¼Ì³Ð£¬ÀàËÆÃæÏò¶ÔÏóÖеĸÅÄî¡£¶ÔÓÚÖ´ÐÐÒì³£µÄ×÷Òµ£¬Ìá¹©ÖØÆôµÄÄÜÁ¦¡£

¿ò¼ÜÔÚJob²ãÃæ£¬Í¬ÑùÌṩÁË×÷Òµ±àÅŵĸÅÄ°üÀ¨Ë³Ðò¡¢Ìõ¼þ¡¢²¢ÐÐ×÷Òµ±àÅÅ¡£

ÔÚÒ»¸öJobÖÐÅäÖöà¸öStep¡£²»Í¬µÄStep¼ä¿ÉÒÔ˳ÐòÖ´ÐУ¬Ò²¿ÉÒÔ°´ÕÕ²»Í¬µÄÌõ¼þÓÐÑ¡ÔñµÄÖ´ÐУ¨Ìõ¼þͨ³£Ê¹ÓÃStepµÄÍ˳ö״̬¾ö¶¨£©£¬Í¨¹ýnextÔªËØ»òÕßdecisionÔªËØÀ´¶¨ÒåÌø×ª¹æÔò£»
ΪÁËÌá¸ß¶à¸öStepµÄÖ´ÐÐЧÂÊ£¬¿ò¼ÜÌṩÁËStep²¢ÐÐÖ´ÐеÄÄÜÁ¦£¨Ê¹ÓÃsplit½øÐÐÉùÃ÷£¬Í¨³£¸ÃÇé¿öÏÂÐèÒªStepÖ®¼äûÓÐÈκεÄÒÀÀµ¹ØÏµ£¬·ñÔòÈÝÒ×ÒýÆðÒµÎñÉϵĴíÎ󣩡£Step°üº¬ÁËÒ»¸öʵ¼ÊÔËÐеÄÅú´¦ÀíÈÎÎñÖеÄËùÓбØÐèµÄÐÅÏ¢£¬ÆäʵÏÖ¿ÉÒÔÊǷdz£¼òµ¥µÄÒµÎñʵÏÖ£¬Ò²¿ÉÒÔÊǷdz£¸´ÔÓµÄÒµÎñ´¦Àí£¬StepµÄ¸´Ôӳ̶Èͨ³£ÊÇÒµÎñ¾ö¶¨µÄ¡£

ÿ¸öStepÓÉItemReader¡¢ItemProcessor¡¢ItemWriter×é³É£¬µ±È»¸ù¾Ý²»Í¬µÄÒµÎñÐèÇó£¬ItemProcessor¿ÉÒÔ×öÊʵ±µÄ¾«¼ò¡£Í¬Ê±¿ò¼ÜÌṩÁË´óÁ¿µÄItemReader¡¢ItemWriterµÄʵÏÖ£¬ÌṩÁ˶ÔFlatFile¡¢XML¡¢Json¡¢DataBase¡¢MessageµÈ¶àÖÖÊý¾ÝÀàÐ͵ÄÖ§³Ö¡£
¿ò¼Ü»¹ÎªStepÌṩÁËÖØÆô¡¢ÊÂÎñ¡¢ÖØÆô´ÎÊý¡¢²¢·¢Êý£»ÒÔ¼°Ìá½»¼ä¸ô¡¢Òì³£Ìø¹ý¡¢ÖØÊÔ¡¢Íê³É²ßÂÔµÈÄÜÁ¦¡£»ùÓÚStepµÄÁé»îÅäÖ㬿ÉÒÔÍê³É³£¼ûµÄÒµÎñ¹¦ÄÜÐèÇ󡣯äÖÐÈý²½×ߣ¨Read¡¢Processor¡¢Writer£©ÊÇÅú´¦ÀíÖеľµä³éÏó¡£

×÷ÎªÃæÏòÅúµÄ´¦Àí£¬ÔÚStep²ãÌṩÁ˶à´Î¶Á¡¢´¦Àí£¬Ò»´ÎÌá½»µÄÄÜÁ¦¡£
ÔÚChunkµÄ²Ù×÷ÖУ¬¿ÉÒÔͨ¹ýÊôÐÔcommit-intervalÉèÖÃread¶àÉÙÌõ¼Ç¼ºó½øÐÐÒ»´ÎÌá½»¡£Í¨¹ýÉèÖÃcommit-intervalµÄ¼ä¸ôÖµ£¬¼õÉÙÌύƵ´Î£¬½µµÍ×ÊԴʹÓÃÂÊ¡£StepµÄÿһ´ÎÌá½»×÷Ϊһ¸öÍêÕûµÄÊÂÎñ´æÔÚ¡£Ä¬ÈϲÉÓÃSpringÌṩµÄÉùÃ÷ʽÊÂÎñ¹ÜÀíģʽ£¬ÊÂÎñ±àÅŷdz£·½±ã¡£ÈçÏÂÊÇÒ»¸öÉùÃ÷ÊÂÎñµÄʾÀý£º

¿ò¼Ü¶ÔÓÚÊÂÎñµÄÖ§³ÖÄÜÁ¦°üÀ¨£º
1.ChunkÖ§³ÖÊÂÎñ¹ÜÀí£¬Í¨¹ýcommit-intervalÉèÖÃÿ´ÎÌá½»µÄ¼Ç¼Êý£»
2.Ö§³Ö¶Ôÿ¸öTaskletÉèÖÃϸÁ£¶ÈµÄÊÂÎñÅäÖ㺸ôÀë½ç±ð¡¢´«²¥ÐÐΪ¡¢³¬Ê±£»
3.Ö§³ÖrollbackºÍno rollback£¬Í¨¹ýskippable-exception-classesºÍno-rollback-exception-classes½øÐÐÖ§³Å£»
4.Ö§³ÖJMS QueueµÄÊÂÎñ¼¶±ðÅäÖã»
ÁíÍ⣬ÔÚ¿ò¼Ü×ÊÉîµÄÄ£ÐͳéÏó·½Ã棬Spring BatchÒ²×öÁ˼«Îª¾«¼òµÄ³éÏó¡£

½ö½öʹÓÃÁùÕÅÒµÎñ±í´æ´¢ÁËËùÓеÄÔªÊý¾ÝÐÅÏ¢£¨°üÀ¨Job¡¢StepµÄʵÀý£¬ÉÏÏÂÎÄ£¬Ö´ÐÐÆ÷ÐÅÏ¢£¬ÎªºóÐøµÄ¼à¿Ø¡¢ÖØÆô¡¢ÖØÊÔ¡¢×´Ì¬»Ö¸´µÈÌṩÁË¿ÉÄÜ£©¡£
BATCH_JOB_INSTANCE£º×÷ҵʵÀý±í£¬ÓÃÓÚ´æ·ÅJobµÄʵÀýÐÅÏ¢
BATCH_JOB_EXECUTION_PARAMS£º×÷Òµ²ÎÊý±í£¬ÓÃÓÚ´æ·Åÿ¸öJobÖ´ÐÐʱºòµÄ²ÎÊýÐÅÏ¢£¬¸Ã²ÎÊýʵ¼Ê¶ÔÓ¦JobʵÀýµÄ¡£
BATCH_JOB_EXECUTION£º×÷ÒµÖ´ÐÐÆ÷±í£¬ÓÃÓÚ´æ·Åµ±Ç°×÷ÒµµÄÖ´ÐÐÐÅÏ¢£¬±ÈÈç´´½¨Ê±¼ä£¬Ö´ÐпªÊ¼Ê±¼ä£¬Ö´ÐнáÊøÊ±¼ä£¬Ö´ÐеÄÄǸöJobʵÀý£¬Ö´ÐÐ״̬µÈ¡£
BATCH_JOB_EXECUTION_CONTEXT£º×÷ÒµÖ´ÐÐÉÏÏÂÎÄ±í£¬ÓÃÓÚ´æ·Å×÷ÒµÖ´ÐÐÆ÷ÉÏÏÂÎĵÄÐÅÏ¢¡£
BATCH_STEP_EXECUTION£º×÷Òµ²½Ö´ÐÐÆ÷±í£¬ÓÃÓÚ´æ·Åÿ¸öStepÖ´ÐÐÆ÷µÄÐÅÏ¢£¬±ÈÈç×÷Òµ²½¿ªÊ¼Ö´ÐÐʱ¼ä£¬Ö´ÐÐÍê³Éʱ¼ä£¬Ö´ÐÐ״̬£¬¶Áд´ÎÊý£¬Ìø¹ý´ÎÊýµÈÐÅÏ¢¡£
BATCH_STEP_EXECUTION_CONTEXT£º×÷Òµ²½Ö´ÐÐÉÏÏÂÎÄ±í£¬ÓÃÓÚ´æ·Åÿ¸ö×÷Òµ²½ÉÏÏÂÎĵÄÐÅÏ¢¡£
ʵÏÖ×÷ÒµµÄ½¡×³ÐÔÓëÀ©Õ¹ÐÔ
Åú´¦ÀíÒªÇóJob±ØÐëÓнÏÇ¿µÄ½¡×³ÐÔ£¬Í¨³£JobÊÇÅúÁ¿´¦ÀíÊý¾Ý¡¢ÎÞÈËÖµÊØµÄ£¬ÕâÒªÇóÔÚJobÖ´ÐÐÆÚ¼äÄܹ»Ó¦¶Ô¸÷ÖÖ·¢ÉúµÄÒì³£¡¢´íÎ󣬲¢¶ÔJobÖ´ÐнøÐÐÓÐЧµÄ¸ú×Ù¡£
Ò»¸ö½¡×³µÄJobͨ³£ÐèÒª¾ß±¸ÈçÏµļ¸¸öÌØÐÔ£º
1. ÈÝ´íÐÔ
ÔÚJobÖ´ÐÐÆÚ¼ä·ÇÖÂÃüµÄÒì³££¬JobÖ´Ðпò¼ÜÓ¦Äܹ»½øÐÐÓÐЧµÄÈÝ´í´¦Àí£¬¶ø²»ÊÇÈÃÕû¸öJobÖ´ÐÐʧ°Ü£»Í¨³£Ö»ÓÐÖÂÃüµÄ¡¢µ¼ÖÂÒµÎñ²»ÕýÈ·µÄÒì³£²Å¿ÉÒÔÖÕÖ¹JobµÄÖ´ÐС£
2. ¿É×·×ÙÐÔ
JobÖ´ÐÐÆÚ¼äÈκη¢Éú´íÎóµÄµØ·½¶¼ÐèÒª½øÐÐÓÐЧµÄ¼Ç¼£¬·½±ãºóÆÚ¶Ô´íÎóµã½øÐÐÓÐЧµÄ´¦Àí¡£ÀýÈçÔÚJobÖ´ÐÐÆÚ¼äÈκ௧öÂÔ´¦ÀíµÄ¼Ç¼ÐÐÐèÒª±»ÓÐЧµÄ¼Ç¼ÏÂÀ´£¬Ó¦ÓóÌÐòά»¤ÈËÔ±¿ÉÒÔÕë¶Ô±»ºöÂԵļǼºóÐø×öÓÐЧµÄ´¦Àí¡£
3. ¿ÉÖØÆôÐÔ
JobÖ´ÐÐÆÚ¼äÈç¹ûÒòΪÒì³£µ¼ÖÂʧ°Ü£¬Ó¦¸ÃÄܹ»ÔÚʧ°ÜµÄµãÖØÐÂÆô¶¯Job£»¶ø²»ÊÇ´ÓÍ·¿ªÊ¼ÖØÐÂÖ´ÐÐJob¡£

¿ò¼ÜÌṩÁËÖ§³ÖÉÏÃæËùÓÐÄÜÁ¦µÄÌØÐÔ£¬°üÀ¨Skip£¨Ìø¹ý¼Ç¼´¦Àí£©¡¢Retry£¨ÖØÊÔ¸ø¶¨µÄ²Ù×÷£©¡¢Restart£¨´Ó´íÎóµã¿ªÊ¼ÖØÐÂÆô¶¯Ê§°ÜµÄJob£©£º
Skip£¬ÔÚ¶ÔÊý¾Ý´¦ÀíÆÚ¼ä£¬Èç¹ûÊý¾ÝµÄij¼¸ÌõµÄ¸ñʽ²»ÄÜÂú×ãÒªÇ󣬿ÉÒÔͨ¹ýSkipÌø¹ý¸ÃÐмǼµÄ´¦Àí£¬ÈÃProcessorÄܹ»Ë³ÀûµÄ´¦ÀíÆäÓàµÄ¼Ç¼ÐС£
Retry£¬½«¸ø¶¨µÄ²Ù×÷½øÐжà´ÎÖØÊÔ£¬ÔÚijЩÇé¿öϲÙ×÷ÒòΪ¶ÌÔݵÄÒì³£µ¼ÖÂÖ´ÐÐʧ°Ü£¬ÈçÍøÂçÁ¬½ÓÒì³£¡¢²¢·¢´¦ÀíÒì³£µÈ£¬¿ÉÒÔͨ¹ýÖØÊԵķ½Ê½±ÜÃâµ¥´ÎµÄʧ°Ü£¬Ï´ÎÖ´ÐвÙ×÷ʱºòÍøÂç»Ö¸´Õý³££¬²»ÔÙÓв¢·¢µÄÒì³££¬ÕâÑùͨ¹ýÖØÊÔµÄÄÜÁ¦¿ÉÒÔÓÐЧµÄ±ÜÃâÕâÀà¶ÌÔݵÄÒì³£¡£
Restart£¬ÔÚJobÖ´ÐÐʧ°Üºó£¬¿ÉÒÔͨ¹ýÖØÆô¹¦ÄÜÀ´¼ÌÐøÍê³ÉJobµÄÖ´ÐС£ÔÚÖØÆôʱºò£¬Åú´¦Àí¿ò¼ÜÔÊÐíÔÚÉÏ´ÎÖ´ÐÐʧ°ÜµÄµãÖØÐÂÆô¶¯Job£¬¶ø²»ÊÇ´ÓÍ·¿ªÊ¼Ö´ÐУ¬ÕâÑù¿ÉÒÔ´ó·ùÌá¸ßJobÖ´ÐеÄЧÂÊ¡£
¶ÔÓÚÀ©Õ¹ÐÔ£¬¿ò¼ÜÌṩµÄÀ©Õ¹ÄÜÁ¦°üÀ¨ÈçϵÄËÄÖÖģʽ :
Multithreaded Step ¶àÏß³ÌÖ´ÐÐÒ»¸öStep;
Parallel Step ͨ¹ý¶àÏ̲߳¢ÐÐÖ´Ðжà¸öStep;
Remote Chunking ÔÚÔ¶¶Ë½ÚµãÉÏÖ´Ðзֲ¼Ê½Chunk²Ù×÷;
Partitioning Step ¶ÔÊý¾Ý½øÐзÖÇø£¬²¢·Ö¿ªÖ´ÐÐ;
ÎÒÃÇÏÈÀ´¿´µÚÒ»ÖÖµÄʵÏÖMultithreaded Step£º

Åú´¦Àí¿ò¼ÜÔÚJobÖ´ÐÐʱĬÈÏʹÓõ¥¸öÏß³ÌÍê³ÉÈÎÎñµÄÖ´ÐУ¬Í¬Ê±¿ò¼ÜÌṩÁËÏ̳߳صÄÖ§³Ö£¨Multithreaded
Stepģʽ£©£¬¿ÉÒÔÔÚStepÖ´ÐÐʱºò½øÐв¢Ðд¦Àí£¬ÕâÀïµÄ²¢ÐÐÊÇָͬһ¸öStepʹÓÃÏ̳߳ؽøÐÐÖ´ÐУ¬Í¬Ò»¸öStep±»²¢ÐеÄÖ´ÐС£Ê¹ÓÃtaskletµÄÊôÐÔtask-executor¿ÉÒԷdz£ÈÝÒ׵Ľ«ÆÕͨµÄStep±ä³É¶àÏß³ÌStep¡£
Multithreaded StepµÄʵÏÖʾÀý£º

ÐèҪעÒâµÄÊÇSpring Batch¿ò¼ÜÌṩµÄ´ó²¿·ÖµÄItemReader¡¢ItemWriterµÈ²Ù×÷¶¼ÊÇÏ̲߳»°²È«µÄ¡£
¿ÉÒÔͨ¹ýÀ©Õ¹µÄ·½Ê½ÏÔÏÖḬ̈߳²È«µÄStep¡£
ÏÂÃæÎª´ó¼Òչʾһ¸öÀ©Õ¹µÄʵÏÖ£º

ÐèÇó£ºÕë¶ÔÊý¾Ý±íµÄÅúÁ¿´¦Àí£¬ÊµÏÖḬ̈߳²È«µÄStep£¬²¢ÇÒÖ§³ÖÖØÆôÄÜÁ¦£¬¼´ÔÚÖ´ÐÐʧ°Üµã¿ÉÒԼǼÅú´¦ÀíµÄ״̬¡£
¶ÔÓÚʾÀýÖеÄÊý¾Ý¿â¶ÁÈ¡×é¼þJdbcCursorItemReader£¬ÔÚÉè¼ÆÊý¾Ý¿â±íʱ£¬ÔÚ±íÖÐÔö¼ÓÒ»¸ö×Ö¶ÎFlag£¬ÓÃÓÚ±êʶµ±Ç°µÄ¼Ç¼ÊÇ·ñÒѾ¶ÁÈ¡²¢´¦Àí³É¹¦£¬Èç¹û´¦Àí³É¹¦Ôò±êʶFlag=true£¬µÈÏ´ÎÖØÐ¶ÁÈ¡µÄʱºò£¬¶ÔÓÚÒѾ³É¹¦¶ÁÈ¡ÇÒ´¦Àí³É¹¦µÄ¼Ç¼ֱ½ÓÌø¹ý´¦Àí¡£
Multithreaded Step£¨¶àÏ̲߳½£©ÌṩÁ˶à¸öÏß³ÌÖ´ÐÐÒ»¸öStepµÄÄÜÁ¦£¬µ«ÕâÖÖ³¡¾°ÔÚʵ¼ÊµÄÒµÎñÖÐʹÓõIJ¢²»ÊǷdz£¶à¡£
¸ü¶àµÄÒµÎñ³¡¾°ÊÇJobÖв»Í¬µÄStepûÓÐÃ÷È·µÄÏȺó˳Ðò£¬¿ÉÒÔÔÚÖ´ÐÐÆÚ²¢ÐеÄÖ´ÐС£
Parallel Step£ºÌṩµ¥¸ö½ÚµãºáÏòÀ©Õ¹µÄÄÜÁ¦

ʹÓó¡¾°£ºStep A¡¢Step BÁ½¸ö×÷Òµ²½Óɲ»Í¬µÄÏß³ÌÖ´ÐУ¬Á½Õß¾ùÖ´ÐÐÍê±Ïºó£¬Step C²Å»á±»Ö´ÐС£
¿ò¼ÜÌṩÁ˲¢ÐÐStepµÄÄÜÁ¦¡£¿ÉÒÔͨ¹ýSplitÔªËØÀ´¶¨Òå²¢ÐеÄ×÷ÒµÁ÷£¬²¢Öƶ¨Ê¹ÓõÄÏ̳߳ء£
Parallel StepģʽµÄÖ´ÐÐЧ¹ûÈçÏ£º

ÿ¸ö×÷Òµ²½²¢Ðд¦Àí²»Í¬µÄ¼Ç¼£¬Ê¾ÀýÖÐÈý¸ö×÷Òµ²½£¬´¦ÀíͬһÕűíÖеIJ»Í¬Êý¾Ý¡£
²¢ÐÐStepÌṩÁËÔÚÒ»¸ö½ÚµãÉϺáÏò´¦Àí£¬µ«Ëæ×Å×÷Òµ´¦ÀíÁ¿µÄÔö¼Ó£¬ÓпÉÄÜһ̨½ÚµãÎÞ·¨Âú×ãJobµÄ´¦Àí£¬´ËʱÎÒÃÇ¿ÉÒÔ²ÉÓÃÔ¶³ÌStepµÄ·½Ê½½«¶à¸ö»úÆ÷½Úµã×éºÏÆðÀ´Íê³ÉÒ»¸öJobµÄ´¦Àí¡£
Remote Chunking£ºÔ¶³ÌStep¼¼Êõ±¾ÖÊÉÏÊǽ«¶ÔItem¶Á¡¢Ð´µÄ´¦ÀíÂß¼½øÐзÖÀ룻ͨ³£Çé¿ö϶ÁµÄÂß¼·ÅÔÚÒ»¸ö½Úµã½øÐвÙ×÷£¬½«Ð´²Ù×÷·Ö·¢µ½ÁíÍâµÄ½ÚµãÖ´ÐС£

Ô¶³Ì·Ö¿éÊÇÒ»¸ö°Ñstep½øÐм¼Êõ·Ö¸îµÄ¹¤×÷£¬²»ÐèÒª¶Ô´¦ÀíÊý¾ÝµÄ½á¹¹ÓÐÃ÷È·Á˽⡣
ÈκÎÊäÈëÔ´Äܹ»Ê¹Óõ¥½ø³Ì¶ÁÈ¡²¢ÔÚ¶¯Ì¬·Ö¸îºó×÷Ϊ"¿é"·¢Ë͸øÔ¶³ÌµÄ¹¤×÷½ø³Ì¡£
Ô¶³Ì½ø³ÌʵÏÖÁ˼àÌýÕßģʽ£¬·´À¡ÇëÇó¡¢´¦ÀíÊý¾Ý×îÖÕ½«´¦Àí½á¹ûÒì²½·µ»Ø¡£ÇëÇóºÍ·µ»ØÖ®¼äµÄ´«Êä»á±»È·±£ÔÚ·¢ËÍÕߺ͵¥¸öÏû·ÑÕßÖ®¼ä¡£
ÔÚMaster½Úµã£¬×÷Òµ²½¸ºÔð¶ÁÈ¡Êý¾Ý£¬²¢½«¶ÁÈ¡µÄÊý¾Ýͨ¹ýÔ¶³Ì¼¼Êõ·¢Ë͵½Ö¸¶¨µÄÔ¶¶Ë½ÚµãÉÏ£¬½øÐд¦Àí£¬´¦ÀíÍê±ÏºóMaster¸ºÔð»ØÊÕRemote¶ËÖ´ÐеÄÇé¿ö¡£
ÔÚSpring Batch¿ò¼ÜÖÐͨ¹ýÁ½¸öºËÐĵĽӿÚÀ´Íê³ÉÔ¶³ÌStepµÄÈÎÎñ£¬·Ö±ðÊÇChunkProviderÓëChunkProcessor¡£
ChunkProvider£º¸ù¾Ý¸ø¶¨µÄItemReader²Ù×÷²úÉúÅúÁ¿µÄChunk²Ù×÷£»
ChunkProcessor£º¸ºÔð»ñÈ¡ChunkProvider²úÉúµÄChunk²Ù×÷£¬Ö´ÐоßÌåµÄдÂß¼£»
Spring BatchÖжÔÔ¶³ÌStepûÓÐĬÈϵÄʵÏÖ£¬µ«ÎÒÃÇ¿ÉÒÔ½èÖúSI»òÕßAMQPʵÏÖÀ´ÊµÏÖÔ¶³ÌͨѶÄÜÁ¦¡£
»ùÓÚSIʵÏÖRemote ChunkingģʽµÄʾÀý£º

Step±¾µØ½Úµã¸ºÔð¶ÁÈ¡Êý¾Ý£¬²¢Í¨¹ýMessagingGateway½«ÇëÇó·¢Ë͵½Ô¶³ÌStepÉÏ£»Ô¶³ÌStepÌṩÁ˶ÓÁеļàÌýÆ÷£¬µ±ÇëÇó¶ÓÁÐÖÐÓÐÏûϢʱºò»ñÈ¡ÇëÇóÐÅÏ¢²¢½»¸øChunkHander¸ºÔð´¦Àí¡£
½ÓÏÂÀ´ÎÒÃÇ¿´ÏÂ×îºóÒ»ÖÖ·ÖÇøÄ£Ê½£»Partitioning Step£º·ÖÇøÄ£Ê½ÐèÒª¶ÔÊý¾ÝµÄ½á¹¹ÓÐÒ»¶¨µÄÁ˽⣬ÈçÖ÷¼üµÄ·¶Î§¡¢´ý´¦ÀíµÄÎļþµÄÃû×ֵȡ£

ÕâÖÖģʽµÄÓŵãÔÚÓÚ·ÖÇøÖÐÿһ¸öÔªËØµÄ´¦ÀíÆ÷¶¼Äܹ»ÏñÒ»¸öÆÕͨSpring BatchÈÎÎñµÄµ¥²½Ò»ÑùÔËÐУ¬Ò²²»±ØÈ¥ÊµÏÖÈκÎÌØÊâµÄ»òÊÇеÄģʽ£¬À´ÈÃËûÃÇÄܹ»¸üÈÝÒ×ÅäÖÃÓë²âÊÔ¡£
ͨ¹ý·ÖÇø¿ÉÒÔʵÏÖÒÔϵÄÓŵ㣺
·ÖÇøÊµÏÖÁ˸üϸÁ£¶ÈµÄÀ©Õ¹£»
»ùÓÚ·ÖÇø¿ÉÒÔʵÏÖ¸ßÐÔÄܵÄÊý¾ÝÇз֣»
·ÖÇø±ÈÔ¶³Ìͨ³£¾ßÓиü¸ßµÄÀ©Õ¹ÐÔ£»
·ÖÇøºóµÄ´¦ÀíÂß¼£¬Ö§³Ö±¾µØÓëÔ¶³ÌÁ½ÖÖģʽ£»
·ÖÇø×÷ÒµµäÐ͵ĿÉÒÔ·Ö³ÉÁ½¸ö´¦Àí½×¶Î£¬Êý¾Ý·ÖÇø¡¢·ÖÇø´¦Àí£»
Êý¾Ý·ÖÇø£º¸ù¾ÝÌØÊâµÄ¹æÔò£¨ÀýÈ磺¸ù¾ÝÎļþÃû³Æ£¬Êý¾ÝµÄΨһÐÔ±êʶ£¬»òÕß¹þÏ£Ëã·¨£©½«Êý¾Ý½øÐкÏÀíµÄÊý¾ÝÇÐÆ¬£¬Îª²»Í¬µÄÇÐÆ¬Éú³ÉÊý¾ÝÖ´ÐÐÉÏÏÂÎÄExecution
Context¡¢×÷Òµ²½Ö´ÐÐÆ÷Step Execution¡£¿ÉÒÔͨ¹ý½Ó¿ÚPartitionerÉú³É×Ô¶¨ÒåµÄ·ÖÇøÂß¼£¬Spring
BatchÅú´¦Àí¿ò¼ÜĬÈÏʵÏÖÁ˶ԶàÎļþµÄʵÏÖorg.springframework.batch.core.partition.support.MultiResourcePartitioner£»Ò²¿ÉÒÔ×ÔÐÐÀ©Õ¹½Ó¿ÚPartitionerÀ´ÊµÏÖ×Ô¶¨ÒåµÄ·ÖÇøÂß¼¡£
·ÖÇø´¦Àí£ºÍ¨¹ýÊý¾Ý·ÖÇøºó£¬²»Í¬µÄÊý¾ÝÒѾ±»·ÖÅäµ½²»Í¬µÄ×÷Òµ²½Ö´ÐÐÆ÷ÖУ¬½ÓÏÂÀ´ÐèÒª½»¸ø·ÖÇø´¦ÀíÆ÷½øÐÐ×÷Òµ£¬·ÖÇø´¦ÀíÆ÷¿ÉÒÔ±¾µØÖ´ÐÐÒ²¿ÉÒÔÔ¶³ÌÖ´Ðб»»®·ÖµÄ×÷Òµ¡£½Ó¿ÚPartitionHandler¶¨ÒåÁË·ÖÇø´¦ÀíµÄÂß¼£¬Spring
BatchÅú´¦Àí¿ò¼ÜĬÈÏʵÏÖÁ˱¾µØ¶àÏ̵߳ķÖÇø´¦Àíorg.springframework.batch.core.partition.support.TaskExecutorPartitionHandler£»Ò²¿ÉÒÔ×ÔÐÐÀ©Õ¹½Ó¿ÚPartitionHandlerÀ´ÊµÏÖ×Ô¶¨ÒåµÄ·ÖÇø´¦ÀíÂß¼¡£

Spring Batch¿ò¼ÜÌṩÁ˶ÔÎļþ·ÖÇøµÄÖ§³Ö£¬ÊµÏÖÀàorg.springframework.batch.core.partition.support.MultiResourcePartitionerÌṩÁ˶ÔÎļþ·ÖÇøµÄĬÈÏÖ§³Ö£¬¸ù¾ÝÎļþÃû½«²»Í¬µÄÎļþ´¦Àí½øÐзÖÇø£¬ÌáÉý´¦ÀíµÄËٶȺÍЧÂÊ£¬ÊʺÏÓдóÁ¿Ð¡ÎļþÐèÒª´¦ÀíµÄ³¡¾°¡£

ʾÀýչʾÁ˽«²»Í¬Îļþ·ÖÅäµ½²»Í¬µÄ×÷Òµ²½ÖУ¬Ê¹ÓÃMultiResourcePartitioner½øÐзÖÇø£¬Òâζ×Åÿ¸öÎļþ»á±»·ÖÅäµ½Ò»¸ö²»Í¬µÄ·ÖÇøÖС£Èç¹ûÓÐÆäËüµÄ·ÖÇø¹æÔò£¬¿ÉÒÔͨ¹ýʵÏÖ½Ó¿ÚPartitionerÀ´½øÐÐ×Ô¶¨ÒåµÄÀ©Õ¹¡£ÓÐÐËȤµÄTX£¬¿ÉÒÔ×Ô¼ºÊµÏÖ»ùÓÚÊý¾Ý¿âµÄ·ÖÇøÄÜÁ¦Å¶¡£
×ܽáһϣ¬Åú´¦Àí¿ò¼ÜÔÚÀ©Õ¹ÐÔÉÏÌṩÁË4Öв»Í¬ÄÜÁ¦£¬Ã¿ÖÖ¶¼ÊǸ÷×ÔµÄʹÓó¡¾°£¬ÎÒÃÇ¿ÉÒÔ¸ù¾Ýʵ¼ÊµÄÒµÎñÐèÒª½øÐÐÑ¡Ôñ¡£

Åú´¦Àí¿ò¼ÜµÄ²»×ãÓëÔöÇ¿
Spring BatchÅú´¦Àí¿ò¼ÜËäÈ»ÌṩÁË4ÖÖ²»Í¬µÄ¼à¿Ø·½Ê½£¬µ«´ÓĿǰµÄʹÓÃÇé¿öÀ´¿´£¬¶¼²»ÊǷdz£µÄÓѺá£

ͨ¹ýDBÖ±½Ó²é¿´£¬¶ÔÓÚ¹ÜÀíÈËÔ±À´½²£¬ÕæµÄ²»ÈÌÖ±ÊÓ£»
ͨ¹ýAPIʵÏÖ×Ô¶¨ÒåµÄ²éѯ£¬ÕâÊdzÌÐòÔ±µÄÌìÌã¬È·ÊµÔËάÈËÔ±µÄµØÓü£»
ÌṩÁËWeb¿ØÖÆÌ¨£¬½øÐÐJobµÄ¼à¿ØºÍ²Ù×÷£¬Ä¿Ç°ÌṩµÄ¹¦ÄÜÌ«Âã¶£¬ÎÞ·¨Ö±½ÓÓÃÓÚÉú²ú£»
ÌṩJMX²éѯ·½Ê½£¬¶ÔÓÚ·Ç¿ª·¢ÈËԱ̫²»ÓѺã»
µ«ÔÚÆóÒµ¼¶Ó¦ÓÃÖÐÃæ¶ÔÅúÁ¿Êý¾Ý´¦Àí£¬½ö½öÌṩÅú´¦Àí¿ò¼Ü½öÄÜÂú×ãÅú´¦Àí×÷ÒµµÄ¿ìËÙ¿ª·¢¡¢Ö´ÐÐÄÜÁ¦¡£
ÆóÒµÐèҪͳһµÄÅú´¦ÀíÆ½Ì¨À´´¦Àí¸´ÔӵįóÒµÅú´¦ÀíÓ¦Óã¬Åú´¦ÀíÆ½Ì¨ÐèÒª½â¾ö×÷ÒµµÄͳһµ÷¶È¡¢Åú´¦Àí×÷ÒµµÄ¼¯ÖйÜÀíºÍ¹Ü¿Ø¡¢Åú´¦Àí×÷ÒµµÄͳһ¼à¿ØµÈÄÜÁ¦¡£
ÄÇÍêÃÀµÄ½â¾ö·½°¸ÊÇÊ²Ã´ÄØ£¿
ÆóÒµ¼¶Åú´¦ÀíÆ½Ì¨ÐèÒªÔÚSpring BatchÅú´¦Àí¿ò¼ÜµÄ»ù´¡ÉÏ£¬¼¯³Éµ÷¶È¿ò¼Ü£¬Í¨¹ýµ÷¶È¿ò¼Ü¿ÉÒÔ½«ÈÎÎñ°´ÕÕÆóÒµµÄÐèÇó½øÐÐÈÎÎñµÄ¶¨ÆÚÖ´ÐУ»
·á¸»Ä¿Ç°Spring Batch Admin£¨Spring BatchµÄ¹ÜÀí¼à¿ØÆ½Ì¨£¬Ä¿Ç°ÄÜÁ¦±È½Ï±¡Èõ£©¿ò¼Ü£¬Ìṩ¶ÔJobµÄͳһ¹ÜÀí¹¦ÄÜ£¬ÔöÇ¿Job×÷ÒµµÄ¼à¿Ø¡¢Ô¤¾¯µÈÄÜÁ¦£»
ͨ¹ýÓëÆóÒµµÄ×éÖ¯»ú¹¹¡¢È¨ÏÞ¹ÜÀí¡¢ÈÏ֤ϵͳ½øÐкÏÀíµÄ¼¯³É£¬Ôöǿƽ̨¶ÔJob×÷ÒµµÄȨÏÞ¿ØÖÆ¡¢°²È«¹ÜÀíÄÜÁ¦¡£
ÓÉÓÚʱ¼ä¹ØÏµ£¬½ñÌìµÄ·ÖÏí¾Íµ½ÕâÀºÜ¶àÄÚÈÝδÄÜÕ¹¿ªÌÖÂÛ¡£»¶Ó´ó¼ÒÔÚʵ¼ÊÒµÎñÖÐʹÓÃSpring Batch¿ò¼Ü¡£ |