Spring Boot, Apache Camel e ActiveMQ: una route “from JMS to File” per spostare un file partendo da un messaggio con il suo path – Parte 1

In questo post vediamo come utilizzare Apache Camel per spostare un file tra due folder, partendo da un messaggio JMS ricevuto su una coda ActiveMQ contenente il fullpath del file originale.

Fermiamoci un attimo su quanto appena detto per riepilogare velocemente che cosa sono Camel e ActiveMQ, entrambi prodotti di Apache e quindi open-source.

Camel è un integration-framework che, fornendo un’implementazione dei più comuni Enterprise Integration Pattern, permette di definire dei workflow, chiamati in questo caso “Route“, che integrano tra loro protocolli e tecnologie diverse attraverso i relativi “Component” in un’ottica orientata ai messaggi. Per la definizione delle Route è possibile utilizzare o le fluent API messe a disposizione dal framework o delle configurazioni XML.

ActiveMQ invece è un broker di messaggistica che permette l’integrazione Message-Oriented tra applicazioni e implementa la specifica JMS (Java Message Service) definita nella Java Platform Enterprise Edition.

Quindi, come detto in apertura, combineremo queste tecnologie per implementare uno scenario in cui:

  • Viene depositato un file in una cartella
  • Viene ricevuta una notifica su una coda ActiveMQ con il full path del file
  • Il file per cui è stato ricevuto il full path come messaggio viene spostato in un’altra cartella

Per farlo creiamo un progetto Spring Boot, utilizzando il suo rispettivo ambiente di sviluppo Spring Tool Suite.
Creiamo quindi un nuovo progetto selezionando dal menù “File” -> “New” -> “Spring Starter Project” (oppure con lo shortcut Alt+Shift+N)
CamelJMStoFile 01 - New project

Selezioniamo gli starters di SpringBoot relativi ad Apache Camel a ActiveMQ, disponibili nella sezione “I/O”, come illustrato nella figura seguente:
CamelJMStoFile 02 - Camel and ActiveMQ SpringBoot starters

A questo punto ci troviamo con il nuovo progetto creato e gli starters di Camel e ActiveMQ che avevamo selezionato già espressi come dipendenze nel file POM di Maven del progetto.

CamelJMStoFile 03 - Camel and ActiveMQ Maven Dependencies

Dobbiamo ora definire la route Camel che ci permette di spostare un file, partendo dal suo full path.
Iniziamo creando nel nostro progetto un package “routes”:

CamelJMStoFile 04 - Camel and ActiveMQ example new package routes

dentro al quale creiamo una nuova classe che chiamaiamo “JMSToFolderRoute.java”, alla quale facciamo estendere “RouteBuilder“, una classe astratta di Camel contenuta nel package “org.apache.camel.builder”
Nell’estendere RouteBuilder dobbiamo effettuare l’override del metodo configure(), definito come segue:

@Override
public void configure() throws Exception {
	// TODO Auto-generated method stub
	
}

Al fine di renderla visibile all’environment di Spring Boot dobbiamo decorare la nostra classe con l’annotation @Component.
La classe JMSToFolderRoute inizialmente si presenterà quindi così:

package net.davismol.cameljmsexample.routes;

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class JMSToFolderRoute extends RouteBuilder {

	@Override
	public void configure() throws Exception {
		
		// TODO Auto-generated method stub
		
	}
}

CamelJMStoFile 05 - Camel route class extends RouteBuilder

Il metodo configure() è il punto in cui dovremo definire gli step della nostra route Camel e lo faremo utilizzando le Fluent API messe a disposizione da Camel.

Prima di partire con la Route però dobbiamo predisporre tutto il necessario, per cui iniziamo con il setup di un’istanza del broker ActiveMQ.

Vai alla seconda parte dell’articolo: Spring Boot, Apache Camel e ActiveMQ: una route “from JMS to File” per spostare un file partendo da un messaggio con il suo path – Parte 2

This entry was posted in $1$s. Bookmark the permalink.

One thought on “Spring Boot, Apache Camel e ActiveMQ: una route “from JMS to File” per spostare un file partendo da un messaggio con il suo path – Parte 1

  1. Pingback: Spring Boot, Apache Camel e ActiveMQ: una route “from JMS to File” per spostare un file partendo da un messaggio con il suo path – Parte 2 | Dede Blog

Leave a Reply

Your email address will not be published. Required fields are marked *