java - camel integration




Che cosa è esattamente Apache Camel? (14)

Cosa è esattamente?

Apache Camel è un framework di integrazione leggero che implementa tutti i modelli di integrazione aziendale. È possibile integrare facilmente diverse applicazioni utilizzando i modelli richiesti.

Puoi usare Java, Spring XML, Scala o Groovy. Sono disponibili quasi tutte le tecnologie che puoi immaginare, ad esempio HTTP, FTP, JMS, EJB, JPA, RMI, JMS, JMX, LDAP, Netty ecc.

Dai un'occhiata a questo article e all'articolo del modello EIP

Come interagisce con un'applicazione scritta in Java?

Camel utilizza un linguaggio specifico di dominio Java o DSL per la creazione di modelli o percorsi di integrazione aziendale in una varietà di lingue specifiche del dominio (DSL) elencate di seguito.

Java DSL : un DSL basato su Java che utilizza lo stile di sviluppo fluente.

La storia di Enterprise Integration Pattern si risolve attorno a questi concetti:

Messaggio, Endpoint, Producer, Consumer, Routing, Bus, Transform e Process .

Dai un'occhiata a questo article di Anirban Konar per uno dei casi d'uso in tempo reale.

È qualcosa che va insieme al server?

Funziona come un ponte su più sottosistemi aziendali.

È un programma indipendente?

Apache Camel, un framework di integrazione, integra diverse applicazioni indipendenti.

Il principale vantaggio di Camel : è possibile integrare diverse applicazioni con tecnologie diverse (e protocolli diversi) utilizzando gli stessi concetti per ogni integrazione.

Non capisco cosa fa esattamente Camel .

Se potessi dare in 101 parole un'introduzione a Camel:

  • Cosa è esattamente?
  • Come interagisce con un'applicazione scritta in Java?
  • È qualcosa che va insieme al server?
  • È un programma indipendente?

Per favore, spiega cos'è Camel.


È come una pipeline che si collega

From---->To

In mezzo puoi aggiungere tanti canali e pipe. Il rubinetto può essere di qualsiasi tipo automatico o manuale per il flusso di dati e un percorso per canalizzare il flusso.

Supporta e ha implementazioni per tutti i tipi e tipi di elaborazione. E per la stessa elaborazione molti approcci perché ha molti componenti e ogni componente può anche fornire l'output desiderato utilizzando diversi metodi sotto di esso.

Ad esempio, il trasferimento di file può essere eseguito in cammello con tipi di file spostati o copiati e anche da cartella, server o coda.

-from-->To
   - from-->process-->to
   - from-->bean-->to
   - from-->process-->bean-->to
   -from-->marshal-->process-->unmarshal-->to

Da / a ---- cartella, diretta, seda, vm può essere qualsiasi cosa


BASATO SULL'ANALOGIA

Il routing basato su cammelli può essere compreso molto facilmente mettendosi nei panni di un proprietario di una compagnia aerea (ad es .: American Airlines, Jet Airways).

Scopo della "compagnia aerea" è di "trasportare" passeggeri da una "città" a un'altra nel mondo. Si utilizzano aeromobili di diverse "compagnie aeree" come Boeing, Airbus, HAL per il trasporto di passeggeri.

I passeggeri della tua compagnia aerea utilizzano i "aeroporti" della città e li controllano usando l'aeroporto della città. Un passeggero può "viaggiare" in più città, ma ovunque devono attraversare l'aeroporto per viaggiare tra l'aeromobile della propria compagnia aerea e la città.

Si noti che un passeggero "in partenza" dalla città sta essenzialmente "arrivando" nell'aeromobile della propria compagnia aerea. E un passegero che "arriva" in città, si sta essenzialmente allontanando dall'aereo. Poiché siamo nei panni del proprietario della compagnia aerea, il termine "passeggero in arrivo" e "passeggero in partenza" sono invertiti rispetto alle nostre nozioni convenzionali basate sulla prospettiva delle città.

La stessa infrastruttura "aeroportuale" di ogni città viene utilizzata dai passeggeri "in partenza" e dai passeggeri "in arrivo". Un aeroporto fornisce "infrastrutture in partenza" per i passeggeri in partenza, che è diverso dall'infrastruttura di arrivo prevista per i passeggeri in arrivo.

I passeggeri possono continuare a svolgere le loro attività quotidiane a causa dei vari "servizi" forniti all'interno dell'aeromobile dalle proprie compagnie aeree, durante il viaggio.

Inoltre, la tua compagnia aerea offre anche servizi lounge per trattamenti speciali come "capire la lingua locale" o prepararti per il "viaggio".

Consente di sostituire poche parole / frasi utilizzate sopra con le seguenti:

la tua compagnia aerea: Apache Camel

compagnie aeree: meccanismi di trasporto

aereo della tua compagnia aerea: il meccanismo di trasporto sottostante di Apache Camel

trasportare: percorso

passeggeri: messaggio;

città: sistema;

aeroporto: Camel Component;

comprensione delle lingue locali: Conversioni di tipi;

partenza: produzione, produzione

arrivare: consumare, consumare

viaggio: instradato

servizi: forniti

Dopo aver sostituito le parole, ecco cosa ottieni:

Scopo di 'Apache Camel' è indirizzare i 'messaggi' da un 'sistema' ad un altro nel mondo. Il cammello Apache utilizza diversi meccanismi di trasporto per il routing dei messaggi.

Apache Camel raccoglie i messaggi utilizzando 'Camel based Component' del sistema 'from' e li elimina utilizzando il 'Camel based Component' del sistema 'to'. Un messaggio può essere indirizzato a più sistemi, ma ovunque devono passare attraverso "Componenti basati su Camel" per spostarsi tra il "meccanismo di trasporto sottostante" di Apache Camel e il sistema.

Si noti che un messaggio "prodotto" dal sistema è essenzialmente "consumato" nel meccanismo di trasporto sottostante di Apache Camel ". E un messaggio consumato da un sistema, è essenzialmente prodotto dal "meccanismo di trasporto sottostante" di Apache Camel.

Dal momento che stiamo tentando di capire Camel, dobbiamo pensare dal punto di vista di Camel in poi. Il significato dei termini "messaggio del consumatore" e "messaggio del produttore" sono, quindi, invertiti rispetto alle nostre nozioni convenzionali che sono basate sulla prospettiva di un sistema.

La stessa infrastruttura di codifica "Camel based Component" è utilizzata da "message message" e "consumer message". Un 'componente basato su cammello' fornisce un 'endpoint produttore' per 'messaggio produttore' e un 'endpoint consumatore' per 'messaggio consumatore'.

I messaggi possono essere elaborati da Camel quando vengono instradati.

Oltre a questo routing, Camel offre funzionalità speciali come "Conversione del tipo" e molti altri ...


Camel aiuta nel routing, trasformazione, monitoraggio.

Usa le rotte; che può essere descritto come:

Quando il bus di servizio riceve un messaggio particolare, lo instraderà attraverso nessuna delle destinazioni di servizi / broker come coda / argomenti. Questo percorso è noto come route.

Esempio: la tua applicazione azionaria ha ricevuto qualche input dall'analista, sarà elaborata attraverso l'applicazione / componente web e quindi i risultati saranno pubblicati a tutti i membri interessati / registrati per un particolare aggiornamento delle scorte.


Ci sono molti framework che ci facilitano per la messaggistica e la risoluzione dei problemi nella messaggistica. Uno di questi prodotti è Apache Camel.

La maggior parte dei problemi comuni ha dimostrato soluzioni chiamate modelli di progettazione. Il modello di progettazione per la messaggistica è modelli Enterprise Integration (EIP) che sono ben spiegati here . Il cammello Apache ci aiuta a implementare la nostra soluzione utilizzando gli EIP.

La forza di un framework di integrazione è la sua capacità di facilitarci attraverso EIP o altri pattern, il numero di trasporti e componenti e la facilità di sviluppo su cui il cammello Apache si trova in cima alla lista

Ciascuno dei Framework ha i suoi vantaggi Alcune delle caratteristiche speciali del cammello Apache sono le seguenti.

  1. Fornisce la codifica per essere in molte DSL, ovvero DSL Java e DSL Spring xml, che sono popolari.
  2. Facile da usare e semplice da usare.
  3. Fuse IDE è un prodotto che ti aiuta a codificare tramite interfaccia utente

Ecco un altro tentativo.

Sai come ci sono / erano cose come i metodi Web, ICAN Seebeyond, Tibco BW, IBM Broker. Tutti hanno aiutato le soluzioni di integrazione in azienda. Questi strumenti sono comunemente noti con il nome di strumenti Enterprise Application Integration (EAI).

Esistevano principalmente strumenti di trascinamento della selezione costruiti attorno a queste tecnologie e in alcune parti dovevi scrivere adattatori in Java. Questi codici adattatore non erano stati testati o hanno avuto scarsa strumentazione / automazione nei test.

Proprio come con i modelli di progettazione in fase di programmazione, sono disponibili modelli di integrazione aziendale per soluzioni di integrazione comuni. Sono stati resi famosi da un libro con lo stesso nome di Gregor Hohpe e Bobby Woolf.

Sebbene sia abbastanza possibile implementare soluzioni di integrazione che utilizzano uno o più EIP, Camel è un tentativo di farlo all'interno della propria base di codice usando uno di XML, Java, Groovy o Scala.

Camel supporta tutti i modelli di integrazione aziendale elencati nel libro tramite il suo ricco meccanismo DSL e di routing.

Quindi Camel è una tecnologia in competizione con altri strumenti EAI con un supporto migliore per testare il tuo codice di integrazione. Il codice è conciso a causa delle lingue specifiche del dominio (DSL). È leggibile anche dagli utenti business ed è gratuito e ti rende produttivo.


In breve:

Quando è necessario connettere / integrare sistemi, è probabile che sia necessario connettersi a un'origine dati e quindi elaborare questi dati per soddisfare i requisiti aziendali.

Per farlo:

1) Potresti sviluppare un programma personalizzato che lo faccia (potrebbe richiedere molto tempo e essere difficile da capire, mantenere per altri sviluppatori)

2) In alternativa, è possibile utilizzare Apache Camel per farlo in modo standardizzato (ha la maggior parte dei connettori già sviluppati per te, è sufficiente configurarlo e collegare la logica, chiamata Process):

Cammello ti aiuterà a:

  1. Consuma dati da qualsiasi fonte / formato
  2. Elabora questi dati
  3. Emetti i dati a qualsiasi fonte / formato

Utilizzando Apache Camel, sarà facile comprendere / mantenere / estendere il sistema a un altro sviluppatore.

Apache Camel è sviluppato con Enterprise Integration Patterns. I pattern ti aiutano ad integrare i sistemi in modo positivo :-)


In chiaro inglese, il cammello ottiene (molte) cose fatte senza molto del codice della piastra della caldaia.

Solo per darti una prospettiva, il DSL Java dato di seguito creerà un endpoint REST che sarà in grado di accettare un XML costituito da Elenco di prodotti e lo suddivide in più prodotti e invocare con esso il metodo Process di BrandProcessor. E semplicemente aggiungendo .parallelProcessing (nota la parte commentata) procederà parallelamente a tutti gli oggetti prodotto. (La classe del prodotto è lo stub Java generato da JAXB / XJC dall'XSD su cui l'input xml è confinato.) Questo codice (insieme a poche dipendenze Camel) porterà a termine il lavoro che usava per prendere centinaia di righe di codice Java.

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.split(stax(Product.class))
/*.parallelProcessing()*/
.process(itemDeltaProcessor);

Dopo aver aggiunto l'ID del percorso e la dichiarazione di registrazione

from("servlet:item-delta?matchOnUriPrefix=true&httpMethodRestrict=POST")
.routeId("Item-DeltaRESTRoute")
.log(LoggingLevel.INFO, "Item Delta received on Item-DeltaRESTRoute")
.split(stax(Product.class))
.parallelProcessing()
.process(itemDeltaProcessor);

Questo è solo un esempio, Camel è molto più di un semplice end point REST. Basta dare un'occhiata all'elenco dei componenti collegabili http://camel.apache.org/components.html


La creazione di una descrizione del progetto non dovrebbe essere complicata.

Dico:

Apache Camel è la colla della tecnologia di messaggistica con il routing. Unisce insieme i punti di inizio e di fine della messaggistica consentendo il trasferimento di messaggi da diverse fonti a destinazioni diverse. Ad esempio: JMS -> JSON, HTTP -> JMS o canalizzazione FTP -> JMS, HTTP -> JMS, JSON -> JMS

Wikipedia dice:

Apache Camel è un motore di routing e mediazione basato su regole che fornisce un'implementazione basata su oggetti Java di Enterprise Integration Patterns utilizzando un'API (o linguaggio specifico del dominio Java dichiarativo) per configurare le regole di routing e mediazione. Il linguaggio specifico del dominio significa che Apache Camel può supportare il completamento intelligente sicuro in base al tipo delle regole di routing nel tuo IDE utilizzando il normale codice Java senza enormi quantità di file di configurazione XML; sebbene sia supportata anche la configurazione XML all'interno di Spring.

Vedere? Non è stato difficile?


La maggior parte delle cose "nuove" nell'informatica non sono affatto nuove, sono solo un involucro misterioso per qualcosa che è già ben compreso. Quando sono difficili da capire, di solito è perché qualcuno ha deciso di inventare nuovi termini di linguaggio o di colonizzare termini esistenti per uno scopo diverso (un buon esempio di ciò è l'inversione degli sviluppatori X di cosa significano "client" e "server").

Camel è un wrapper / API basato su Java per il middleware inter-applicazione.

Il middleware è un termine generale per il software che fornisce servizi di interpretazione tra entità che non condividono un linguaggio o tipi di dati comuni.

Questo è quello che Camel è, in fondo. Possiamo dare corpo alla descrizione notando che fornisce middleware di tipo EIP.

Non fornisce il middleware stesso, poiché non può conoscere i dettagli di ciò che le applicazioni devono comunicare. Ma fornisce l'API per creare le parti invariabili di quel middleware (creare un punto di partenza, creare un punto finale, creare condizioni per l'avvio e la fine, ecc.)

Spero che sia d'aiuto.


Se hai da 5 a 10 minuti, in genere raccomando alle persone di leggere questa integrazione con Apache Camel di Jonathan Anstey. È un pezzo ben scritto che fornisce una breve introduzione e una panoramica di alcuni concetti di Camel e implementa un caso d'uso con esempi di codice. In esso, Jonathan scrive:

Apache Camel è un framework Java open source che punta a rendere l'integrazione più semplice e accessibile agli sviluppatori. Lo fa fornendo:

  • implementazioni concrete di tutti gli Enterprise Integration Patterns (EIP) ampiamente utilizzati
  • connettività a una grande varietà di trasporti e API
  • Lingue specifiche del dominio (DSL) facili da usare per collegare EIP e trasporti insieme

C'è anche un capitolo gratuito di Camel in Action che introduce Camel nel primo capitolo. Jonathan è un coautore di quel libro con me.


Se si è a conoscenza dei modelli di integrazione aziendale, Apache Camel è un framework di integrazione che implementa tutti gli EIP.

Ed è possibile distribuire Camel come applicazione standalone in un web-container.

In sostanza, se devi integrare diverse applicazioni con diversi protocolli e tecnologie, puoi usare Camel.


Una definizione da un'altra prospettiva:

Apache Camel è un framework di integrazione. Consiste di alcune librerie Java, che aiutano a implementare problemi di integrazione sulla piattaforma Java. Cosa significa e come si differenzia dalle API su un lato e un Enterprise Service Bus (ESB) dall'altra parte è descritto nel mio articolo " Quando utilizzare Apache Camel ".


Una delle cose che devi capire, prima di provare a capire Apache Camel, sono i modelli di integrazione aziendale. Non tutti nel campo sono effettivamente a conoscenza di loro. Sebbene sia certamente possibile leggere il libro di Enterprise Integration Patterns, un modo più rapido per aggiornarsi su di essi sarebbe leggere qualcosa come l'articolo di Wikipedia sull'Enterprise Application Integration .

Uno ha letto e capito l'area tematica, è molto più probabile che capisca lo scopo di Apache Camel

HTH







enterprise-integration