Bene, a seconda della complessità e del carico dell'applicazione, Spring Batch può o non può essere una buona soluzione. Questa è strettamente un'opinione personale, ma ho scoperto che, mentre Spring Batch ti consente di prototipare rapidamente alcuni meccanismi di batching (devi solo implementare la logica di business, tutti i meccanismi di batch vengono fuori dalla scatola) può risultare lento se tu avere a che fare con quantità molto grandi di dati (trattamenti molto complessi) e le prestazioni sono critiche.
D'altra parte, ho notato dalla tua domanda che dici "accetta file di dati da sistemi diversi applica alcune trasformazioni ai dati". Se i file provengono da canali diversi (come ftp, servizio web, ecc.) Allora Mule ESB potrebbe essere un buon quadro per te. Viene fornito con connettori per tutti i vari modi di avere comunicazioni tra macchine (vari tipi di servizi Web, ftp e persino e-mail) e offre un modo semplice per creare componenti discreti per vari trattamenti di tali file, che è possibile incatenati come preferisci. Inoltre, la cosa è open source, quindi puoi scaricarlo facilmente e provare in tempo reale per vedere se è una buona soluzione per te.
Oltre a questo, se la domanda complessiva del progetto non è molto complessa in termini di esigenze logiche non di business (come: l'invio / ricezione di file avviene solo in un modo e / o il trattamento dei file è semplice e abbastanza stabile da non richiedere alcun sistema modulare di fantasia per i moduli di trasformazione, ecc., puoi andare un po 'più a basso livello e aggiungere semplicemente una libreria che gestisce la tua comunicazione (come forse Jersey per comunicazioni di servizi Web o Apache commons-net per FTP, ecc.) E quindi codificare tutto il resto a mano. Il JDK ha già alcune librerie che potrebbero essere utili, come i parser XML (StAX, JaxB), un modo semplice per gestire I / O di file (nio2), ecc.