Apache Camel - Panoramica
Il cammello è una scatola nera che riceve messaggi da un endpoint e li invia a un altro. All'interno della scatola nera, i messaggi possono essere elaborati o semplicemente reindirizzati.
Allora perché avere un framework per questo? In situazioni pratiche, come si è visto nel caso di studio introduttivo, potrebbero esserci molti mittenti e molti destinatari ciascuno seguendo il proprio protocollo come ftp, http e jms. Il sistema potrebbe richiedere molte regole complesse, ad esempio il messaggio del mittente A deve essere consegnato solo a B&C. In alcune situazioni, potrebbe essere necessario tradurre il messaggio in un altro formato previsto dal destinatario. Questa traduzione può essere soggetta a determinate condizioni in base al contenuto del messaggio. Quindi in sostanza potrebbe essere necessario tradurre tra protocolli, incollare i componenti insieme, definire regole di instradamento e fornire filtri in base al contenuto del messaggio. Ciò è illustrato nella figura seguente:
Per soddisfare i requisiti di cui sopra e progettare un'architettura software adeguata per molte di queste situazioni, gli Enterprise Integration Patterns ( EIP ) sono stati documentati da Gregor Hohpe e Bobby Woolf nel 2003. Apache Camel fornisce l'implementazione di questi modelli e lo scopo di questo tutorial è insegnare come usare Camel in situazioni come quella descritta nell'introduzione.
Apache Camel è un framework open source. È un middleware orientato ai messaggi che fornisce un motore di mediazione e routing basato su regole. È possibile definire regole come se si tratta di un ordine "latte" reindirizzarlo a un fornitore di latte e se si tratta di un ordine "olio" reindirizzarlo a un venditore di petrolio e così via. Utilizzando Camel, sarai in grado di implementare queste regole e di eseguire il routing in un codice Java familiare. Significa che è possibile utilizzare il familiare IDE Java per definire queste regole in un ambiente indipendente dai tipi. Non è necessario utilizzare file di configurazione XML, che in genere tendono ad essere ingombranti. Camel supporta la configurazione XML tramite il framework Spring, se si preferisce utilizzare XML per la configurazione delle regole. Puoi anche utilizzare i file di configurazione XML Blueprint e persino un DSL di Scala, se sei un amante di Scala. Significa anche che puoi usare il tuo Java preferito, l'IDE Scala o anche un semplice editor XML per configurare le regole.
L'input a questo motore può essere un file di testo delimitato da virgole, un POJO (Plain Old Java Object), XML sono uno dei tanti altri formati supportati da Camel. Allo stesso modo, l'output del motore può essere reindirizzato a un file, a una coda di messaggi o persino allo schermo del monitor per visualizzare gli ordini inviati ai rispettivi fornitori. Questi sono chiamati endpoint e Camel supporta il pattern EIP di Message Endpoint . Gli endpoint Camel vengono discussi più avanti nel capitolo Endpoint.
Camel viene tipicamente utilizzato con Apache ServiceMix , Apache ActiveMQ e Apache CXF per implementare architetture orientate ai servizi.