Korištenje Apache Camel s proljećem

1. Pregled

Ovaj će članak pokazati kako konfigurirati i koristiti Apache Camel s Springom.

Apache Camel nudi poprilično korisnih komponenata koje podržavaju knjižnice kao što su JPA, Hibernate, FTP, Apache-CXF, AWS-S3 i, naravno, mnoge druge - sve za pomoć u integraciji podataka između dva različita sustava.

Na primjer, koristeći komponente Hibernate i Apache CXF, podatke možete izvući iz baze podataka i poslati ih drugom sustavu putem REST API poziva.

U ovom uputstvu preći ćemo na jednostavan primjer Camel - čitanje datoteke i pretvaranje njezinog sadržaja u velika, a zatim natrag u mala slova. Koristit ćemo komponentu Camel's File i Spring 4.2.

Ovdje su sve pojedinosti primjera:

  1. Čitaj datoteku iz izvornog direktorija
  2. Pretvorite sadržaj datoteke u velika slova pomoću prilagođenog procesora
  3. Napišite pretvoreni izlaz u odredišni direktorij
  4. Pretvorite sadržaj datoteke u mala slova pomoću Camel Translator
  5. Napišite pretvoreni izlaz u odredišni direktorij

2. Dodajte ovisnosti

Da biste koristili Apache Camel s Springom, trebat će vam sljedeće ovisnosti u vašoj POM datoteci:

 2.16.1 4.2.4.Opusti org.apache.camel camel-core $ {env.camel.version} org.apache.camel camel-spring $ {env.camel.version} org.apache.camel camel-stream $ { env.camel.version} org.springframework spring-context $ {env.spring.version} 

Dakle, imamo:

  • devina jezgra - glavna ovisnost za Apache Camel
  • devina opruga - omogućuje nam upotrebu deve s proljećem
  • potok deva - neobavezna ovisnost, pomoću koje možete (na primjer) prikazati neke poruke na konzoli dok su rute pokrenute
  • proljeće-kontekst - standardna ovisnost o proljeću, potrebna u našem slučaju jer ćemo pokretati devine rute u kontekstu proljeća

3. Kontekst proljetne deve

Prvo ćemo stvoriti datoteku Spring Config gdje ćemo kasnije definirati naše rute za Camel.

Primijetite kako datoteka sadrži sve potrebne prostore imena Apache Camel i Spring i lokacije sheme:

The element predstavlja (ne iznenađuje) kontekst Camel, koji se može usporediti s kontekstom Spring aplikacije. Sada je vaša kontekstualna datoteka spremna za početak definiranja devina ruta.

3.1. Put deva s prilagođenim procesorom

Dalje ćemo napisati našu prvu rutu za pretvaranje sadržaja datoteke u velika slova.

Moramo definirati izvor iz kojeg će ruta čitati podatke. To može biti baza podataka, datoteka, konzola ili bilo koji broj drugih izvora. U našem će slučaju to biti datoteka.

Tada moramo definirati procesor podataka koji će se čitati iz izvora. Za ovaj ćemo primjer napisati prilagođenu klasu procesora. Ova će klasa biti proljetni grah koji će implementirati standardno sučelje procesora Camel.

Nakon što se podaci obrade, trebamo reći rutu do kuda usmjeravati obrađene podatke. Još jednom, ovo bi mogao biti jedan od najrazličitijih rezultata, poput baze podataka, datoteke ili konzole. U našem slučaju pohranit ćemo ga u datoteku.

Da biste postavili ove korake, uključujući ulaz, procesor i izlaz, dodajte sljedeću rutu u kontekstnu datoteku Camel:

Uz to moramo definirati i myFileProcessor grah:

3.2. Prilagođeni procesor velikih slova

Sada moramo stvoriti prilagođeni procesor datoteka koji smo definirali u našem grahu. Mora primijeniti Devu Procesor sučelje, definirajući jedan postupak metoda koja traje Razmjena objekt kao njegov ulaz. Ovaj objekt pruža detalje podataka iz ulaznog izvora.

Naša metoda mora pročitati poruku s Razmjena, velikim slovima dodajte sadržaj, a zatim taj novi sadržaj vratite natrag u Razmjena objekt:

javna klasa FileProcessor implementira Processor {javni void postupak (Exchange razmjena) baca iznimku {String originalFileContent = (String) exchange.getIn (). getBody (String.class); Niz upperCaseFileContent = originalFileContent.toUpperCase (); exchange.getIn (). setBody (upperCaseFileContent); }}

Ova metoda postupka izvršit će se za svaki ulaz primljen od izvora.

3.3. Mali procesor

Sada ćemo dodati još jedan izlaz našoj ruti deva. Ovaj put podatke iste ulazne datoteke pretvorit ćemo u mala slova. Ovaj put, međutim, nećemo koristiti prilagođeni procesor; koristit ćemo značajku Prevoditelj poruka Apache Camel. Ovo je ažurirana ruta za deve:

     $ {body.toLowerCase ()} 

4. Pokretanje aplikacije

Da bi se naše rute obradile, jednostavno moramo učitati datoteku konteksta Camel u kontekst aplikacije Spring:

ClassPathXmlApplicationContext applicationContext = novi ClassPathXmlApplicationContext ("camel-context.xml"); 

Nakon što se ruta uspješno pokrene, stvorit će se dvije datoteke: jedna s velikim i malim slovom.

5. Zaključak

Ako radite integracijski posao, Apache Camel definitivno može olakšati stvari. Biblioteka nudi plug-and-play komponente koje će vam pomoći smanjiti šifru i usredotočiti se na glavnu logiku obrade podataka.

A ako želite detaljno istražiti koncepte Enterprise Integration Patterns, trebali biste pogledati ovu knjigu koju su napisali Gregor Hohpe i Bobby Woolf, koji vrlo čisto konceptualiziraju EIP-ove.

Primjer opisan u ovom članku dostupan je u projektu na GitHubu.