Il ruolo primario di un Message Endpoint di Spring Integration è quello di connettere il codice dell’applicazione al framework in modo non invasivo.
In altre parole, il codice dell’applicazione non dovrebbe “essere consapevole” del messaggio o del canale: proprio come un controller del paradigma MVC intercetta le richieste http, un Endpoint intercetta i messaggi.
Di seguito, riporto gli Endpoint più comuni.
Trasformer
Si tratta dei responsabili della conversione del contenuto o della struttura di un messaggio.
Il Trasformer più comune è probabilmente quello che si occupa di convertire il payload di un messaggio da un formato all’altro, ad esempio da un documento XML ad una stringa Java. I Trasformer possono anche essere utilizzati per modificare i valori dell’header di un messaggio.
Filter
Un filter determina se un messaggio deve essere passato ad un certo canale.
Spesso è sufficiente il check del Content Type del payload, il valore di una property, ecc. Se il contenuto del messaggio rispetta le regole del filtro, viene inviato all’interno del canale, altrimenti droppato. Il Filter viene spesso utilizzato congiuntamente a dei canali di tipo Publish/Subscribe, per selezionare solo determinati tipi di messaggi.
Router
È responsabile di decidere quale o quali canali devono ricevere il messaggio. Solitamente la decisione è basata sul contenuto del messaggio o sui metadati presenti nell’header.
Splitter
È responsabile di accettare un messaggio dal suo canale di input, dividerlo in diversi messaggi e spedirli ai suoi canali di output.
Solitamente è utilizzato per dividere il payload di un messaggio composto in una serie di messaggi contenti sottoparti del messaggio stesso.
Aggregator
Riceve diversi messaggi per poi combinarli in uno solo.
Channel Adapter
Connette un canale ad un altro sistema di trasporto, sia in entrata che in uscita.
Tipicamente si occupa anche di effettuare un mapping tra il messaggio ed il tipo di oggetto trasportato dall’altro canale.