Sto lavorando su un sistema di messaggistica da due anni a questa parte, il sistema è stato scritto da una squadra ormai lontana e coinvolge le e-mail e l'elaborazione dei documenti. Il processo di base è:
-
Ricevi un'email, analizzala, salva gli allegati alla condivisione samba. Notifica al processore dei messaggi. Abbiamo una robusta applicazione Java che funziona molto bene.
-
Elabora il messaggio, questo implica ottenere i dati utente da LDAP, chiamando i servizi web di elaborazione dei file su piattaforme diverse. Il sistema ha una sorta di servizio di riconsegna che esegue il polling del database per messaggi non riusciti o scaduti in stati diversi e li reinvia.
Le parti di elaborazione dei file sono servizi web EJB che fondamentalmente eseguono utilità da riga di comando. Il problema sta nella nostra soluzione di orchestrazione che è basata su OpenESB (quasi morta ora), ha un gruppo di BPEL che si chiamano a vicenda e chiamano EJB remoti (EJB3.0 su glassfish v2).
Il problema più grande è che viene eseguita troppa logica nei BPEL (ad esempio, tutti gli aggiornamenti del database sono eseguiti in BPEL, non c'è un livello di persistenza), sembrano gli spaghetti più terrificanti che abbia mai visto. Per non parlare del fatto che i NetBeans che usiamo per modificarli vengono eseguiti molto lentamente, al punto che alcuni file sono modificabili solo in un semplice editor di testo come XML. Inoltre il sistema ha un numero di bug sgradevoli che richiederebbe un grande refactoring da correggere e temo persino di pensarci. Questi messaggi sono gestiti manualmente dal nostro supporto, quindi non c'è quasi nessun impatto sul client, ma mi piacerebbe comunque avere un vero sistema transazionale.
Ora, per la domanda stessa. Sono disposto a dedicare molto del mio tempo libero a cercare di raggiungere due obiettivi: creare un sostituto per ESB e BPEL, apprendere nuove tecnologie e preferibilmente di tendenza. Mi piacerebbe mantenere il codice negli EJB di elaborazione dei file poiché funzionano bene, anche se sto pensando di sbarazzarmi di SOAP come interfaccia remota. Pertanto, sto chiedendo informazioni su quale tecnologia (-ies) mi consenta di creare una soluzione di messaggistica affidabile che:
- Avere un livello di persistenza amichevole, non ci sarà nulla di veramente complesso in dbs, solo i meta-dati dei messaggi.
- Prenditi cura delle chiamate di bilanciamento e di polling ai servizi web di elaborazione dei file.
- Non è necessario occuparsi di tonnellate di XML in luoghi diversi per aggiungere un nuovo metodo di interfaccia.
- Sarebbe scalabile - può essere eseguito su un numero di macchine.
- consentirebbe il monitoraggio in tempo reale, come la visualizzazione delle code di messaggi, il carico corrente, gli stati ecc.
- Spero che mi permetta di imparare qualcosa di nuovo, ovvero non lo stack J2EE. Fondamentalmente sono aperto a qualsiasi cosa, tranne BPEL e OpenESB.