Voglio usare ehcache non solo come cache ma come contenitore di oggetti sporchi che voglio scaricare nel mio database quando gli oggetti vengono espulsi/scaduti. durante la normale elaborazione, io uso una chiave per cercare in ehcache. se la chiave non è presente, leggo i dati dal database e li metto in ehcache. il valore è in realtà un oggetto complesso che modifico. quando si verifica la condizione ttl/idle time/overflow, vedo che i callback CacheEventListener vengono richiamati. ma c'è un grosso problema. il notifyElementExpired viene chiamato dopo che il valore-chiave è stato rimosso dalla cache. quindi c'è una condizione di gara. se faccio il compito di svuotare il valore dirty in cache in notifyElementExpired e allo stesso tempo, in un altro thread, letta per la stessa chiave, allora c'è un problema di sincronizzazione. il secondo thread non troverà l'oggetto in ehcache e quindi andrà al database mentre l'altro thread è ancora pronto per lo svuotamento.questo caso d'uso può essere elaborato in ehcache?
ho provato a sperimentare con ehcache write-through e non penso che funzioni anche questo.
c'è una soluzione qui ??
Apprezzerei molto le buone soluzioni a questo problema anche se coinvolge qualche altro meccanismo di memorizzazione nella cache diverso da ehcache.
grazie
Non sono riuscito a trovare nessuna risposta a questa domanda. Così sono andato avanti e l'ho risolto io stesso! Ecco la soluzione che ho scritto sul blog - http://blog.readypulse.com/2012/01/08/ehcache-as-a-true-persistent-store-backed-cache/ –
Nice work TVinodGupta. Come promemoria amichevole, puoi per favore pubblicare una risposta alla domanda tu stesso e quindi accettare quella risposta in modo che possiamo chiudere questa domanda? Inoltre, è necessario accettare le risposte alle domande precedenti se risolvono il problema. – Zecas