Uvod u proljetni oblačni zadatak

1. Pregled

Cilj Spring Cloud Task je pružiti funkcionalnost stvaranja kratkotrajnih mikroservisa za aplikaciju Spring Boot.

U Spring Cloud Task-u imamo fleksibilnost dinamičkog izvođenja bilo kojeg zadatka, alokacije resursa na zahtjev i dohvaćanja rezultata nakon završetka zadatka.

Zadaci je novi primitiv unutar Spring Cloud Data Flow koji omogućava korisnicima da izvrše gotovo bilo koju aplikaciju Spring Boot kao kratkotrajni zadatak.

2. Razvoj aplikacije jednostavnog zadatka

2.1. Dodavanje relevantnih ovisnosti

Za početak možemo dodati odjeljak za upravljanje ovisnostima s ovisnosti proljetnog oblaka-zadataka:

   org.springframework.cloud proljeće-oblak-ovisnosti o zadacima 2.2.3.OBUSTAVITI pom import 

Ovo upravljanje ovisnostima upravlja verzijama ovisnosti kroz opseg uvoza.

Moramo dodati sljedeće ovisnosti:

 org.springframework.cloud proljeće-oblak-starter-zadatak org.springframework.cloud proljeće-oblak-zadatak-jezgra 

Ovo je poveznica s Maven Central of jezgra zadataka proljeća-oblaka.

Sada, da bismo pokrenuli našu aplikaciju Spring Boot, trebamo opruga-čizma-starter s odgovarajućim roditeljem.

Koristit ćemo Spring Data JPA kao ORM alat, pa moramo dodati ovisnost i za to:

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

Pojedinosti pokretanja jednostavne aplikacije Spring Boot s Spring Data JPA dostupne su ovdje.

Možemo provjeriti najnoviju verziju proljeće-čizma-starter-roditelj on Maven Central.

2.2. The @EnableTask Bilješka

Da bismo pokrenuli funkcionalnost Spring Cloud Task, moramo dodati @EnableTask napomena:

@SpringBootApplication @EnableTask javna klasa TaskDemo {// ...} 

Bilješka donosi SimpleTaskConfiguration razred na slici koji zauzvrat registrira Spremište zadataka i njegova infrastruktura. Prema zadanim postavkama, karta u memoriji koristi se za pohranu statusa datoteke Spremište zadataka.

Primarne informacije o Spremište zadataka je po uzoru na Izvršenje zadatka razred. Zabilježena polja ove klase su taskName, vrijeme početka, endTime, exitMessage. The exitMessage pohranjuje dostupne informacije u vrijeme izlaska.

Ako je izlaz uzrokovan neuspjehom u bilo kojem slučaju aplikacije, ovdje će se pohraniti cjelokupni trag steka iznimke.

Spring Boot pruža sučelje ExitCodeExceptionMapper koji preslikava neuhvaćene iznimke na izlazne kodove omogućujući pomno ispitivano otklanjanje pogrešaka. Cloud Task informacije pohranjuje u izvor podataka za buduću analizu.

2.3. Konfiguriranje a Izvor podataka za Spremište zadataka

Mapa u memoriji za pohranu Spremište zadataka nestat će nakon završetka zadatka i izgubit ćemo podatke povezane s događajima zadatka. Za pohranu u trajnu pohranu koristit ćemo MySQL kao izvor podataka s Spring Data JPA.

Izvor podataka konfiguriran je u primjena.iml datoteka. Da biste konfigurirali Spring Cloud Task da koristi navedeni izvor podataka kao spremište Spremište zadataka, moramo stvoriti klasu koja se proteže DefaultTaskConfigurer.

Sada možemo poslati konfigurirano Izvor podataka kao argument konstruktora konstruktoru superklase:

@Autowired privatni DataSource dataSource; javna klasa HelloWorldTaskConfigurer proširuje DefaultTaskConfigurer {public HelloWorldTaskConfigurer (DataSource dataSource) {super (dataSource); }}

Da bi gornja konfiguracija bila na djelu, moramo označiti instancu Izvor podataka s @Autowired napomena i ubrizgajte instancu kao konstruktor-argument a HelloWorldTaskConfigurer grah definiran gore:

@Bean public HelloWorldTaskConfigurer getTaskConfigurer () {return new HelloWorldTaskConfigurer (dataSource); }

Ovo dovršava konfiguraciju za pohranu Spremište zadataka u MySQL bazu podataka.

2.4. Provedba

U proljetnom pokretanju, možemo izvršiti bilo koji zadatak neposredno prije nego što aplikacija završi pokretanje. Možemo koristiti ApplicationRunner ili CommandLineRunner sučelja za stvaranje jednostavnog zadatka.

Moramo provesti trčanje metodu ovih sučelja i proglasiti izvedbenu klasu kao grah:

@Component javna statička klasa HelloWorldApplicationRunner implementira ApplicationRunner {@Override public void run (ApplicationArguments arg0) baca izuzetak {System.out.println ("Hello World from Spring Cloud Task!"); }}

Sada, ako pokrenemo našu aplikaciju, trebali bismo dobiti svoj zadatak da proizvedemo potrebne rezultate sa potrebnim tablicama stvorenim u našoj MySQL bazi podataka bilježeći podatke o događajima Zadataka.

3. Životni ciklus zadatka proljetnog oblaka

Na početku kreiramo unos u Spremište zadataka. To je pokazatelj da je sav grah spreman za upotrebu u aplikaciji i trčanje metoda Runner sučelja je spremna za izvršenje.

Po završetku izvršenja trčanje metodom ili u bilo kojem neuspjehu ApplicationContext događaj, Spremište zadataka bit će ažuriran s drugim unosom.

Tijekom životnog ciklusa zadatka možemo registrirati slušatelje dostupne iz TaskExecutionListener sučelje. Treba nam klasa koja implementira sučelje koja ima tri metode - onTaskEnd, onTaksFailed i onTaskStartup pokrenuto u odgovarajućim događajima Zadataka.

Moramo proglasiti grah izvedbene klase u našem TaskDemo razred:

@Bean public TaskListener taskListener () {return new TaskListener (); }

4. Integracija s Spring Batchom

Spring Batch Job možemo izvršiti kao zadatak i evidentirati događaje izvršenja posla pomoću Spring Cloud Task. Da bismo omogućili ovu značajku, moramo dodati batch ovisnosti koje se odnose na Boot i Cloud:

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

Ovdje je veza do Maven Central of proljetni-oblak-zadatak-serija.

Da bismo posao konfigurirali kao zadatak, moramo imati građu posla registriranu u Konfiguracija posla razred:

@Bean javni posao job2 () {povratak jobBuilderFactory.get ( "job2") .start (stepBuilderFactory.get ( "job2step1") .tasklet (novi Tasklet () {@Override javni RepeatStatus izvršiti (StepContribution doprinos, ChunkContext chunkContext) baca iznimku {System.out.println ("Ovaj posao je iz Baeldunga"); return RepeatStatus.FINISHED;}}). Build ()). Build (); }

Moramo ukrasiti TaskDemo razred sa @EnableBatchProcessing bilješka:

//..Ostala bilješka .. @EnableBatchProcessing javna klasa TaskDemo {// ...}

The @EnableBatchProcessing napomena omogućuje značajke Spring Batch s osnovnom konfiguracijom potrebnom za postavljanje batch poslova.

Sada, ako pokrenemo aplikaciju, @EnableBatchProcessing napomena će pokrenuti izvršavanje proljetnog batch zadatka, a Spring Cloud Task evidentirat će događaje izvršavanja svih batch poslova s ​​drugim zadatkom izvršenim u proljetni oblak baza podataka.

5. Pokretanje zadatka iz streama

Zadaće možemo pokretati iz Spring Cloud Streama. Da bismo poslužili u tu svrhu, imamo @EnableTaskLaucnher bilješka. Nakon što dodamo napomenu s aplikacijom Spring Boot, bit će dostupan TaskSink:

@SpringBootApplication @EnableTaskLauncher javna klasa StreamTaskSinkApplication {public static void main (String [] args) {SpringApplication.run (TaskSinkApplication.class, args); }}

The TaskSink prima poruku iz streama koji sadrži GenericMessage koji sadrže TaskLaunchRequest kao korisni teret. Zatim pokreće Zadatak zasnovan na koordinati navedenoj u zahtjevu za pokretanje Zadataka.

Imati TaskSink funkcionalan, potreban nam je grah konfiguriran koji implementira Pokretač zadataka sučelje. Radi testiranja, ovdje se rugamo provedbi:

@Bean public TaskLauncher taskLauncher () {return mock (TaskLauncher.class); }

Ovdje moramo napomenuti da Pokretač zadataka sučelje je dostupno samo nakon dodavanja proljetni-oblak-rasporednik-lokalni ovisnost:

 org.springframework.cloud proljeće-oblak-raspoređivač-lokalno 2.3.1.OBLAŽENJE 

Možemo testirati je li Zadatak pokrenut pozivanjem ulazni od Umivaonik sučelje:

javna klasa StreamTaskSinkApplicationTests {@Autowired private Sink sink; //}

Sada kreiramo primjerak TaskLaunchRequest i pošaljite to kao korisni teret od GenericMessage objekt. Tada se možemo pozvati na ulazni kanal Umivaonik čuvanje GenericMessage objekt u kanalu.

6. Zaključak

U ovom smo tutorijalu istražili kako se obavlja zadatak Spring Cloud i kako ga konfigurirati da bilježi svoje događaje u bazi podataka. Također smo primijetili kako se posao Spring Batch definira i pohranjuje u Spremište zadataka. Na kraju smo objasnili kako možemo pokrenuti zadatak iz Spring Cloud Streama.

Kao i uvijek, kôd je dostupan na GitHub-u.


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