Nell’articolo precedente abbiamo visto il Datatype Channel, vediamo ora il Queue Channel.
Per creare questo tipo di canale è necessario aggiungere un tag figlio <queue />:
<int:channelid="queueChannel">
<queuecapacity="25"/>
</int:channel>
Attenzione, nel caso in cui non venga fornito un valore di capacità massima, si potrebbe incorrere in eccezioni di tipo OutOfMemoryErrors.
Si noti che i messaggi presenti all’interno della coda risiedono in memoria e potrebbero andare perduti nel caso di un crash del sistema. È dunque possibile effettuare il backup di questi dati utilizzando un’implementazione dell’interfaccia MessageGroupStore. In sostanza, si tratta di salvare nello store ogni messaggio inserito nella coda, per poi rimuoverlo quando estratto da essa.
Spring Integration fornisce anche un JdbcMessageStore che permette la memorizzazione dei messaggi all’interno di un RDBMS:
<int:channelid="dbBackedChannel">
<int:queuemessage-store="messageStore">
<int:channelid="myChannel">
<int-jdbc:message-storeid="messageStore"data-source="someDataSource"/>
E’ sufficiente iniettare un’istanza di javax.sql.DataSource.
Questo modulo fornisce anche alcuni schemi DDL per i database più popolari, sono localizzati nel package org.springframework.integration.jdbc del modulo spring-integration-jdbc. Nel caso in cui non sia disponibile uno store che supporti le proprie necessità, è possibile fornire una propria implementazione del MessageGroupStore.
Vedi anche: