Bandiera inglese Bandiera italiana

Mule ESB

MuleSoft ESB è uno strumento innovativo pensato per risolvere le moderne esigenze di integrazione in modo semplice, veloce e intuitivo. A differenza dal tradizionale approccio applicativo alla base delle metodologie EIP, o delle architetture SOA, Mule si differenzia per:

  • Implementazione dei flussi in modo visuale, scrivendo pochissimo codice (in alcuni casi nemmeno una linea).
  • Personalizzazione dei componenti con diversi linguaggi: Java, PHP, JavaScript, Groovy Script etc.
  • Approccio ESB (il bus parla il linguaggio dei sistemi remoti) anziché SOA (i sistemi parlano il linguaggio del broker)
  • Disponibilità, integrata nell'IDE e nel server, dei più richiesti connettori verso altri sistemi, quali ad esempio: Apache CXF (SOAP), HTTP, File System, Salesforce, Twitter, Facebook, Amazon ecc.

Trattandosi di uno strumento relativamente giovane, l'unico punto debole di Mule è la scarsità di documentazione esaustiva. Spieghiamo meglio l'affermazione: MuleSoft offre una guida utente e una buona documentazione. Quello di cui si sente la mancanza, in fase di sviluppo e debug, è l'assistenza di una community in grado di sopperire a qualsiasi difficoltà. Per fare un esempio concreto, quando si sviluppa in Java, PHP o jQuery è possibile trovare la risposta a (quasi) ogni domanda su Stack Overflow. Al contrario, quando incappiamo in qualche problema su MuleSoft, per trovare la soluzione occorre rimboccarsi le maniche e andare a spulciare la documentazione. Questo ovviamente non è affatto un limite intrinseco dello strumento, ma il prezzo da pagare per la sua giovane età.

Per ovviare al problema, questa pagina offre la possibilità di scaricare alcuni progetti completi, pronti all'uso, che mostrano come implementare i flussi più comuni, quali ad esempio: un web service SOAP, l'invocazione di un API REST o la lettura di dati dal File System.

Progetti demo

Di seguito sono riportati alcuni progetti "demo". Si tratta di flussi relativamente semplici, che affrontano e risolvono uno specifico problema. Ogni progetto contiene una cartella doc con la documentazione essenziale (solitamente un file di testo che evidenzia i punti cruciali del flusso). Tutto il materiale è in lingua italiana, mentre i commenti tecnici all'interno dei file (ad esempio: file di configurazione, note XML ecc.) sono in lingua inglese.

Vedi anche: flussi Mule avanzati

  • Hello World

    Progetto semplicissimo, ottimo per iniziare. Il flusso implementa un servizio di echo su un connettore HTTP. Il progetto può essere testato facilmente via browser, invocando direttamente l'URL del listener HTTP (nota: predisposto per l'uso anche via dominio).
  • Hello Basic Rest

    Esempio di client REST minimale. Il progetto utilizza il connettore HTTP per consumare un servizio REST remoto (non fornito col progetto). L'EPR del servizo REST è configurabile nel file di properties.
  • Hello Basic Soap

    Esempio di servizio SOAP (server side). Il progetto espone un servizio SOAP con due metodi (identico a quello utilizzato nel progetto Java template). Per motivi didattici il servizio è implementato in maniera dummy (restituisce una response 'dummy').
  • Hello JMS

    Progetto che mostra l'utilizzo, sia lato producer che lato consumer, delle code JMS. Il progetto simula il fallimento di una chiamata remota effettuata dal flusso del consumer e un esempio di gestione dell'errore. Il flusso offre anche un esempio di logging via Log4j2.
  • Hello File

    Esempio di lettura di dati da un file (in formato JSON). Il progetto contiene anche un esempio di conversione del payload JSON in un oggetto Java e una bozza di data mapper (con logica cablata).
  • Hello File to Rest

    Lettura di dati da un file JSON, su linea multipla, e conversione di ogni linea in un singolo payload JSON. I diversi pacchetti vengono poi spediti ad un EPR Rest, come se si trattasse di una serie di chiamate sequenziali. Il progetto mostra anche come configurare diversi ambienti di sviluppo, test e produzione.
  • Hello CSV to Rest

    Lettura di dati da un file csv, su linea multipla, e conversione di ogni linea in un singolo payload JSON. I diversi pacchetti vengono poi spediti ad un EPR Rest, come se si trattasse di una serie di chiamate sequenziali.
  • Hello Rest Service

    Esempio di servizio REST basato sul formato JSON. Utilizzo di una classe Java Jersey (JSON) come interfaccia del servizio. Gestione chiamate CORS (X-Requested-With). Configurazione Log4j2 ed esempio di componente con codice JavaScript.
  • Hello Rest DB Service

    Esempio di servizio REST basato sul formato JSON. Utilizzo di una classe Java Jersey (JSON) come interfaccia del servizio. Lettura dei dati da database Oracle. Impostazioni per Log4j2 ed esempio di configurazione multi-ambiente (sviluppo, test, produzione).
  • Hello Shared Resource

    Esempio di "progetto di dominio", ovvero di un flusso che permette di esporre una risorsa condivisa (esempio: un Listener HTTP su una porta specifica), utilizzabile da un generico altro flusso. I flussi di dominio vanno deployati nella cartella domains. Il progetto può essere testato modificato opportunamento il flusso Hello World.
  • Hello Monitor

    Esposizione di una pagina web atta al monitoraggio dello stato dei flussi attivi su un Mule Standalone Server. Utilizzo di JMX, configurazione Spring beans (passaggio dipendenze via file XML del flusso) e classi Java per accedere al server JMX. Il progetto contiene anche il modulo "sonda" da deployare sul target server.