Salve a tutti,
avrei bisogno di usare una casella di posta come fonte per un ItemReader all'interno di un processo Spring Batch. Quello che vorrei ottenere è: verifico se ci sono nuove email, se sì, salva in un database e poi fai delle operazioni. Ho già scritto una classe che riceve le email:
codice:
public ImapMailReceiver()
{
ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");
DirectChannel inputChannel = context.getBean("mailChannel", DirectChannel.class);
inputChannel.subscribe(new MessageHandler()
{
@Override
public void handleMessage(Message<?> message) throws org.springframework.integration.MessagingException
{
// qui ho il codice che legge la mail e mi estrae le informazioni che mi servono
}
});
}
Nel file config.xml c'è questo pezzo:
codice:
<int:channel id="mailChannel" />
<mail:inbound-channel-adapter id="mailReceiver"
store-uri="imap://DATI_DI_ACCESSO_CHE_OMETTO:143/Inbox/TEST_IN"
should-delete-messages="false"
should-mark-messages-as-read="true"
channel="mailChannel"
java-mail-properties="javaMailProperties"
mail-filter-expression="subject matches '\u0023\u0023SMS\u0023\u0023 .*'">
<int:poller max-messages-per-poll="1" fixed-rate="15000" />
</mail:inbound-channel-adapter>
Il mio problema è che non so come collegare tutto questo in un flusso batch reader-processor-writer. Nel senso, leggo l'email.. ma come la passo al processor? La mia classe non è un reader e non saprei come trasformare il tutto in un reader
Magari è una banalità dovuta al fatto che è la prima volta che uso Spring Batch, cosa mi sfugge? Grazie