ottobre 22, 2017

File Consumer su una cartella con Apache Camel

Apache Camel è un framework scritto in Java per l’integrazione sincrona e asincrona tra sistemi eterogenei. E’ basato sul libro Enterprise Integration Patterns di Gregor Hohpe e Bobby Woolf e implementa molti dei pattern di integrazione definiti nel libro.
In questo articolo utilizzo alcuni oggetti fondamentali di Camel come per esempio Route Builder, Processor e File Component per implementare un Consumer di file su una directory. Lo scenario tipico di utilizzo è quello in cui da un lato vi è un Sender che carica uno o più file all’interno di una cartella condivisa e dall’altro vi è un Receiver che effettua il polling della directory per verificare la presenza di file e fare delle operazioni di lettura e scrittura su di essi.

camel-polling-directory-01

Camel mette a disposizione l’interfaccia PollingConsumer per istanziare oggetti di tipo Consumer direttamente sull’endpoint URI e per impostare opzioni e modalità di ricezione messaggi direttamente sull’istanza:

Tuttavia in questo esempio non faccio uso dell’interfaccia. Le opzioni di ricezione messaggi vengono definite come parametri direttamente sull’endpoint URI. Ulteriori approfondimenti si possono trovare qui:

Stack

Apache Camel 2.17.3
JDK 1.8
Maven 3.2

Source

SUBVERSION
svn co https://github.com/giuseppeurso-eu/activemq/trunk activemq-samples
GIT
git clone https://github.com/giuseppeurso-eu/activemq

Il codice sorgente utilizzato in questo articolo si trova nella directory camel-polling-directory.

ConsumerRouteBuilder.java

Definisce un endpoint di tipo File e fornisce al Consumer l’accesso su file system.

CamelExecutor.java

Inizializza CamelContext e lancia un Thread.sleep per simulare un runtime di 30 secondi. In questo intervallo di tempo, il Consumer processerà i file dentro la directory in modalità polling.

ConsumerProcessor.java

Processa i file presenti nella directory di origine.

 

Related posts

Leave a Reply

Your email address will not be published.