Salve,
Sto realizzando un programmino che sostanzialmente ascolta eventi da un generatore di eventi ( programma esterno) e deve prendere l'evento ricevuto, serializzarlo in json ed inviarlo ad un applicativo remoto tramite un apposito webservice
Avevo pensato ad una cosa del genere:
1) ricevo l'evento
2) lo serializzo
3) invio richiesta al webservices remoto
3a) non ho errori, termino
3b) errore di connessione, proseguo
4) setto lo stato del sistema in "offline"
5) scrivo l'evento serializzato su filesystem e termino
in "offline" mode tutti i seguenti eventi verranno direttamente scritti su filesystem, finchè qualcosa non riporterò il sistema in "online" e torneremo ad usare il webservices
ora, il flusso di eventi potrebbe essere molto basso ( decine l'ora) o molto alto (decine al secondo), quindi l'idea di scrivere su filesystem deve essere ragionata bene
intanto gli eventi devono essere accodati nello storage, perchè poi devono essere inviati nell'ordine ricevuto (che sarà il piu possibile fedele all'ordine temporale dell'evento stesso), e in secondo luogo, una volta tornato in online il sistema, ci vorrà qualcosa che prenda tutti gli eventi salvati su filesystem e li invii al ws remoto (prima o durante la ricezione di nuovi eventi, poi vedo)
Ora, cosa uso secondo voi per salvare su filesystem questi dati? l'idea di massimo sono:
1) sqllite o berkley db
2) http://square.github.io/tape/ o http://www.ehcache.org/ (devo capire se entrambi supportano la concorrenza negli accessi)
3) soluzioni custom (ma quando mai)
4) varie ed eventuali provenienti da vostre idee geniali
Per aumentare il throughput a sistema online pensavo di usare un pool di servizi che inviano l'evento serializzato al ws remoto, quindi in caso di sistema offline il pool scriverà contemporaneamente nella cache (condivisa? una a servizio? )
usare sqllite così come berkley, non so potrebbe essere un'idea così magari se in futuro devo salvarmi qualcosa di diverso (tipo configurazioni o cose simili) potrei appoggiarmi direttamente a uno dei due. tape (non so se sia concorrente) o ehcache potrebbero essere una soluzione, ma non li conosco non li ho mai utilizzati (nel senso che me li studio, ma non so se rispondono all'esigenza). Poi cercavo su google qualche spunto per qualche altra idea nel mentre
Qualche idea, suggerimento, pensiero in merito?
Grazie![]()