מבוא למשימת ענן אביבית

1. סקירה כללית

מטרת משימת ענן האביב היא לספק את הפונקציונליות של יצירת מיקרו-שירותים קצרי טווח ליישום Spring Boot.

במשימה של ענן אביב יש לנו את הגמישות להפעיל כל משימה באופן דינמי, להקצות משאבים לפי דרישה ולהשיג את התוצאות לאחר השלמת המשימה.

משימות היא פרימיטיבית חדשה בזרימת הנתונים של ענן האביב המאפשרת למשתמשים לבצע כמעט כל יישום אתחול Spring כמשימה קצרת מועד.

2. פיתוח יישום משימות פשוט

2.1. הוספת תלות רלוונטית

כדי להתחיל, אנו יכולים להוסיף סעיף ניהול תלות עם אביב-ענן-תלויות משימות:

   org.springframework.cloud spring-cloud-task-dependencies 2.2.3.RELEASE pom import 

ניהול תלות זה מנהל גרסאות של תלות באמצעות היקף הייבוא.

עלינו להוסיף את התלות הבאה:

 org.springframework.cloud spring-cloud-starter-task org.springframework.cloud spring-cloud-task-core 

זהו הקישור למרכז Maven של אביב-ענן-ליבת משימות.

עכשיו, כדי להתחיל ביישום Spring Boot שלנו, אנחנו צריכים אביב-אתחול-מתנע עם ההורה הרלוונטי.

אנו נשתמש ב- Spring Data JPA ככלי ORM, לכן עלינו להוסיף את התלות גם לכך:

 org.springframework.boot spring-boot-starter-data-jpa 2.2.6.RELEASE 

הפרטים של bootstrapping יישום פשוט של Boot Boot עם Spring Data JPA זמינים כאן.

אנחנו יכולים לבדוק את הגרסה החדשה ביותר של ה- אביב-אתחול-המתנע-הורה oנ מייבן סנטרל.

2.2. ה @EnableTask ביאור

כדי לאתחל את הפונקציונליות של משימת ענן האביב, עלינו להוסיף @EnableTask ביאור:

@SpringBootApplication @EnableTask מחלקה ציבורית TaskDemo {// ...} 

ההערה מביאה תצורת SimpleTaskConfiguration בכיתה בתמונה אשר בתורו רושמת את TaskRepository והתשתית שלה. כברירת מחדל, מפת זיכרון משמשת לאחסון הסטטוס של ה- TaskRepository.

המידע העיקרי של TaskRepository מעוצב ב ביצוע משימות מעמד. השדות המפורטים של מחלקה זו הם שם המשימה, שעת התחלה, endTime, exitMessage. ה exitMessage מאחסן את המידע הזמין בזמן היציאה.

אם יציאה נגרמת על ידי כשל בכל מקרה של היישום, עקבות הערימה החריגה המלאה תישמר כאן.

Spring Boot מספק ממשק ExitCodeExceptionMapper הממפה חריגים שלא נתפסו לקודי יציאה המאפשרים ניפוי נבחן בדוק. משימת הענן שומרת את המידע במקור הנתונים לצורך ניתוח עתידי.

2.3. קביעת תצורה של א מקור מידע ל TaskRepository

מפת הזיכרון לאחסון TaskRepository ייעלם לאחר סיום המשימה ונאבד נתונים הקשורים לאירועי משימות. כדי לאחסן באחסון קבוע, אנו נשתמש ב- MySQL כמקור נתונים עם Spring Data JPA.

מקור הנתונים מוגדר ב application.yml קוֹבֶץ. כדי להגדיר את משימת ענן האביב לשימוש במקור הנתונים המסופק כאחסון של TaskRepository, עלינו ליצור מעמד שמתארך DefaultTaskConfigurer.

כעת, אנו יכולים לשלוח מוגדרים מקור מידע כטיעון קונסטרוקטור לבנאי הסופר-קלאס:

@ מקור נתונים פרטי של נתונים מקוריים; מחלקה ציבורית HelloWorldTaskConfigurer מרחיב DefaultTaskConfigurer {ציבורי HelloWorldTaskConfigurer (DataSource dataSource) {super (dataSource); }}

כדי שהקונפיגורציה לעיל תפעל, עלינו להעלות הערה על מופע מקור מידע עם @Autowired ביאור ולהזריק את המופע כטיעון קונסטרוקטור של א HelloWorldTaskConfigurer שעועית שהוגדרה לעיל:

@Bean הציבורי HelloWorldTaskConfigurer getTaskConfigurer () {החזר HelloWorldTaskConfigurer חדש (dataSource); }

זה משלים את התצורה לאחסון TaskRepository למסד הנתונים MySQL.

2.4. יישום

באביב אתחול, אנו יכולים לבצע כל משימה רגע לפני שהיישום מסיים את הפעלתו. אנחנו יכולים להשתמש ApplicationRunner אוֹ CommandLineRunner ממשקים ליצירת משימה פשוטה.

עלינו ליישם את לָרוּץ שיטה של ​​ממשקים אלה ולהכריז על מחלקת היישום כשעועית:

מחלקה סטטית ציבורית @Component HelloWorldApplicationRunner מיישמת את ApplicationRunner {@Override public void run (ApplicationArguments arg0) זורק חריגה {System.out.println ("שלום עולם ממשימת ענן אביב!"); }}

כעת, אם אנו מריצים את היישום שלנו, עלינו לקבל את המשימה שלנו לייצר פלט הכרחי עם טבלאות נדרשות שנוצרו במסד הנתונים MySQL שלנו, כניסה לנתוני האירועים של המשימה.

3. מחזור חיים של משימת ענן אביבית

בהתחלה, אנו יוצרים ערך ב- TaskRepository. זו האינדיקציה לכך שכל השעועית מוכנה לשימוש ביישום וב- לָרוּץ השיטה של ​​ממשק Runner מוכנה לביצוע.

עם השלמת הביצוע של לָרוּץ שיטה או בכל כישלון של ApplicationContext מִקרֶה, TaskRepository יעודכן בערך אחר.

במהלך מחזור החיים של המשימה נוכל לרשום מאזינים הזמינים מ TaskExecutionListener מִמְשָׁק. אנו זקוקים לשיעור המיישם את הממשק בעל שלוש שיטות - onTaskEnd, onTaksFailed ו onTaskStartup מופעלות באירועים בהתאמה של המשימה.

עלינו להכריז על שעועית המעמד המיישם אצלנו TaskDemo מעמד:

@Bean TaskListener ציבורי taskListener () {להחזיר TaskListener חדש (); }

4. שילוב עם אצווה באביב

אנו יכולים לבצע עבודת אצווה באביב כמשימה ולרשום אירועים של ביצוע העבודה באמצעות משימת ענן אביב. כדי לאפשר תכונה זו עלינו להוסיף תלויות אצווה הנוגעות לאתחול וענן:

 org.springframework.boot spring-boot-starter-batch org.springframework.cloud spring-cloud-task-batch 

הנה הקישור למרכז Maven של אביב-ענן-משימות-אצווה.

כדי להגדיר עבודה כמשימה עלינו לרשום את שעועית העבודה ב- JobConfiguration מעמד:

@Bean Job Job2 () {return jobBuilderFactory.get ("job2"). Start (stepBuilderFactory.get ("job2step1") .tasklet (Tasklet חדש () {@Override public RepeatStatus לבצע (תרומת StepContribution, ChunkContext chunkContext) זורק Exception {System.out.println ("העבודה הזו היא מבלדונג"); החזיר RepeatStatus.FINISHED;}}). Build ()). Build (); }

אנחנו צריכים לקשט את TaskDemo כיתה עם @EnableBatchProcessing ביאור:

//..הערה אחרת .. @EnableBatchProcessing TaskDemo בכיתה ציבורית {// ...}

ה @EnableBatchProcessing ביאור מאפשר תכונות Spring Batch עם תצורת בסיס הנדרשת להגדרת עבודות אצווה.

כעת, אם אנו מריצים את היישום, @EnableBatchProcessing ביאור יביא לביצוע עבודת אצווה באביב, ומשימת ענן אביב תרשום את אירועי הביצוע של כל עבודות האצווה עם המשימה האחרת שבוצעה מעיין האביב מאגר מידע.

5. הפעלת משימה מזרם

אנו יכולים להפעיל משימות מזרם ענן האביב. כדי לשרת מטרה זו, יש לנו את @EnableTaskLaucnher ביאור. ברגע שנוסיף את ההערה עם אפליקציית Spring Boot, TaskSink יהיה זמין:

@SpringBootApplication @EnableTaskLauncher מחלקה ציבורית StreamTaskSinkApplication {public static void main (String [] args) {SpringApplication.run (TaskSinkApplication.class, args); }}

ה TaskSink מקבל את ההודעה מזרם שמכיל GenericMessage מֵכִיל TaskLaunchRequest כעומס מטען. לאחר מכן הוא מפעיל משימה המבוססת על תיאום המסופק בבקשת הפעלת המשימות.

יש TaskSink פונקציונלי, אנו דורשים שעועית מוגדרת המיישמת TaskLauncher מִמְשָׁק. למטרות בדיקה, אנחנו לועגים ליישום כאן:

@Bean TaskLauncher הציבור taskLauncher () {מדומה להחזיר (TaskLauncher.class); }

עלינו לציין כאן כי TaskLauncher ממשק זמין רק לאחר הוספת ה- אביב-ענן-פורס-מקומי תלות:

 org.springframework.cloud spring-cloud-deployer-local 2.3.1.RELEASE 

אנו יכולים לבדוק האם המשימה הושקה על ידי הפעלת קֶלֶט של ה כִּיוֹר מִמְשָׁק:

מעמד ציבורי StreamTaskSinkApplicationTests {@ כיור פרטי כיור פרטי; //}

כעת, אנו יוצרים מופע של TaskLaunchRequest ולשלוח זאת כמשא מטען של GenericMessage לְהִתְנַגֵד. אז נוכל להפעיל את קֶלֶט ערוץ של כִּיוֹר שמירה על GenericMessage אובייקט בערוץ.

6. מסקנה

במדריך זה בדקנו כיצד משימת אביב ענן מבצעת וכיצד להגדיר אותה לרישום האירועים שלה במסד נתונים. כמו כן, צפינו כיצד מוגדרת ומאוחסנת עבודת אצווה באביב TaskRepository. לבסוף, הסברנו כיצד נוכל להפעיל משימה מתוך זרם ענן האביב.

כמו תמיד, הקוד זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found