Guida introduttiva a Talend ESB – Parte 3
L'Enterprise Service Bus (ESB) è diventato sempre più popolare in numerose organizzazioni alla ricerca di un'alternativa alle costose e instabili soluzioni di integrazione point-to-point. Molte organizzazioni hanno l'esigenza di integrare numerose applicazioni; un'infrastruttura basata su un groviglio di connessioni a codifica manuale pone problemi di gestione, è instabile ed è difficile da correggere in caso di errore di una connessione. L'ESB rappresenta un'alternativa a codici lunghi e disordinati.
Scopri ora come implementare il servizio, effettuare il bilanciamento del carico e testare l'integrazione CRM in SoapUI.
Nella Parte 1 della Guida introduttiva a Talend ESB abbiamo:
- Importato il WSDL in Talend Open Studio for ESB.
- Creato e definito il servizio.
Nella Parte 2 della Guida introduttiva a Talend ESB abbiamo:
- Abilitato la mappatura XML dei dati sorgente CRM.
- Unito i set di dati CRM tramite la manipolazione delle stringhe in Talend Open Studio.
In questa terza e ultima parte della Guida introduttiva a Talend ESB spiegheremo come implementare il servizio e quindi effettuare il bilanciamento del carico con Apache Camel con l'obiettivo di aumentare la visibilità dell'endpoint, per poter testare infine un provider di servizi Web con carico completamente bilanciato e basato su SOAP e assicurarci che l'integrazione CRM funzioni correttamente.
Test in SoapUI
Il servizio è pronto, pertanto possiamo avviarlo ed eseguire i test in SoapUI, un'applicazione per il test di servizi Web open-source. La schermata riportata di seguito ci permette di visualizzare endpoint o servizi fittizi direttamente in Studio a scopo di test.
A questo punto, apriamo SoapUI, avviamo un "New SOAP Project" (Nuovo progetto SOAP) e apriamo il WSDL in modo da poter esaminare le operazioni "customer" in questo ambiente di test.
Selezioniamo l'operazione "getCustomer" in Projects (Progetti) all'interno di SoapUI, quindi facciamo clic su "Request" (Richiesta) per visualizzare i dettagli dell'operazione: viene visualizzato il payload dell'operazione. È necessario un solo parametro, "custId".
A questo punto torniamo al file CSV contenente le informazioni sorgente originali che vogliamo integrare. Noteremo che gli ID cliente sono a 10 cifre.
Tornando a SoapUI, assegniamo al servizio un ID cliente a 10 cifre valido e il servizio restituisce le informazioni relative a Fred Flintstone, concatenando il nome e restituendo tutti i dettagli ad esso relativi. Per avere conferma, torniamo al file CSV originale e vediamo che corrisponde.
Ritorniamo nella finestra di Talend Open Studio (sotto) per visualizzare il flusso di informazioni trasmesse dal servizio durante l'esecuzione del test. Come possiamo vedere sono presenti una richiesta e cinque clienti nella risorsa clienti sottostante. Abbiamo trovato una corrispondenza e ottenuto una risposta standard. A questo punto abbiamo appurato che il servizio è pronto per essere implementato.
Implementazione del servizio
La prima cosa da fare nel processo di implementazione è esportare il servizio all'esterno di Talend Studio, nel container di runtime.
Sul lato sinistro della schermata di Talend Open Studio for ESB troviamo "demoCustomer 0.1" ed "Export Service". Si apre la finestra di avviso "No Job Assigned" (Nessun job assegnato), a indicare che per alcune operazioni non risulta assegnata l'implementazione; è corretto così, quindi facciamo clic su "OK".
Nella Parte 1 avevamo avviato due container di runtime. A questo punto esportiamo il servizio con "Export Service" nel container primario che avevamo creato:
Confermiamo l'esportazione selezionando il container primario e digitando "list": possiamo vedere che è stato avviato ed è disponibile il nuovo "demoCustomer 0.1". Operazione riuscita.
Poiché la porta sulla quale il container primario implementa i servizi (8090) non corrisponde alla porta utilizzata da Talend Studio (8040), è necessario eseguire un test per assicurarsi che il servizio risponda correttamente. Torniamo a SoapUI e selezioniamo "Add new endpoint" (Aggiungi nuovo endpoint), quindi modifichiamo "localhost:" impostandolo su 8040 ed eseguiamo la richiesta attraverso SOAP. I risultati mostrano i dati clienti attesi, pertanto la risposta del servizio funziona correttamente.
Implementazione del modello di integrazione con bilanciamento del carico
Dopo avere verificato che il servizio risponde correttamente, implementiamo l'algoritmo di bilanciamento del carico ed esaminiamo alcune delle funzionalità di mediazione e indirizzamento disponibili. Per dare inizio al processo di bilanciamento del carico selezioniamo nuovamente "Export Service" (Esporta servizio), ma questa volta lo inviamo al container di runtime secondario, che non abbiamo utilizzato. A questo punto il framework per il bilanciamento del carico è pronto: due servizi equivalenti in termini funzionali sono in esecuzione su due container diversi.
Dopo avere esportato il servizio, visualizziamo i dettagli del secondo container e vediamo che "demoCustomer" è implementato e in esecuzione sulla porta predefinita 8041. Come abbiamo fatto prima per la procedura di test della risposta del servizio, torniamo a SoapUI e aggiungiamo un altro endpoint, questa volta impostando "localhost:" su 8041, ed eseguiamo la richiesta sul container n. 2 attraverso SOAP.
Torniamo all'interfaccia nella quale sono visualizzati i contenuti del container. Possiamo osservare che il nostro servizio clienti riceve risposte perché l'elemento di registrazione che abbiamo incorporato nel servizio sta registrando la risposta XML direttamente attraverso l'output standard. (In fondo alla schermata riportata in basso)
Passaggio finale: indirizzamento e mediazione
Torniamo a Talend Open Studio for ESB per esaminare le funzionalità di indirizzamento e mediazione e creiamo un semplice proxy per il bilanciamento del carico per l'endpoint clienti. Per iniziare facciamo clic su "Mediation" (Mediazione) nell'angolo in alto a destra, quindi su "Resource" (Risorsa) e "Create New Resource" (Crea nuova risorsa) e carichiamo il nostro WSDL "DemoCustomer".
A questo punto, creiamo una nuova route selezionando "Create New Route" e la chiamiamo "proxycustomer"; nella tavolozza sulla destra non sono più inclusi i componenti di integrazione, ma sono visualizzate le funzionalità incapsulate di Apache Camel. Nella tavolozza troviamo funzionalità tipo "LoadBalancer", "MessageRouter", vari processi ed endpoint di messaggistica, tutte funzioni di Apache Camel che permettono di creare le funzionalità di indirizzamento e mediazione.
Avviamo l'implementazione dell'indirizzamento con l'endpoint "cCxF", quindi modifichiamo il nome in "proxyCustomer". Facciamo clic sulla scheda "Component" (Componente) per applicare alcuni metadati a questo componente e specificare in che modo sarà rappresentato come route questo nuovo endpoint del servizio. Proseguiamo assegnando a questa route la stessa interfaccia contrattuale degli altri servizi presenti in "DemoCustomer", ad eccezione dell'endpoint con proxy che viene avviato sulla porta 8050.
Ora procediamo a bilanciare il carico tra i due servizi clienti che avevamo già implementato nei due container. Per configurare il bilanciamento, trasciniamo al centro altri due "cCxF" e diamo a ciascuno la stessa interfaccia contrattuale, applicando però le porte dei due diversi container (8040, 8041) ai rispettivi servizi.
Infine, selezioniamo "Routing" (Indirizzamento) nel pannello di navigazione di sinistra e quindi "cLoadBalancer", il servizio di bilanciamento del carico standard di Apache Camel che consente di bilanciare le richieste attraverso l'interfaccia proxy ai nostri due endpoint equivalenti in termini funzionali. Selezioniamo il bilanciamento del carico tra i due container utilizzando l'algoritmo standard "Round robin".
Eseguiamo il bilanciamento direttamente da Talend Studio per vedere come viene implementato. Sostanzialmente stiamo avviando un'interfaccia proxy al servizio clienti demo sul punto 8050. Questa route adesso è ferma in attesa della richiesta. Torniamo a SoapUI e apriamo un nuovo endpoint su 8050.
Per assicurarci che sia effettivamente in corso il bilanciamento del carico tra i due endpoint del servizio clienti, controlliamo i container primario e secondario per verificare che ricevano le richieste a turno. Il container primario viene impiegato per il bilanciamento del carico, mentre quello secondario viene usato per fornire maggiori risposte al servizio. Come possiamo vedere è in corso il bilanciamento del carico.
A questo punto abbiamo creato, esposto e integrato i nostri servizi nelle risorse esistenti e generato semplici modelli di bilanciamento del carico utilizzando il nostro framework di mediazione e indirizzamento.
Puoi provare tu stesso utilizzando Talend Open Studio for ESB. Approfitta dell'ESB gratuito di Talend: scoprirai quanto è semplice implementare all'interno della tua rete lo stesso modello che abbiamo appena esplorato. Prova oggi stesso.