Abbiamo un'app middleware Java (J2SE) ad alte prestazioni in cui la latenza è della massima importanza. Utilizza alcuni dati permanenti contenuti in un database precedente, in cui un'applicazione legacy può modificare occasionalmente i dati. A causa del requisito di latenza, stiamo pianificando di memorizzare nella cache i dati permanenti, utilizzando JPA con Hibernate e magari un provider di cache come Ehcache.Aggiornamento cache in background JPA
Tuttavia, quando i dati permanenti vengono aggiornati (dall'app legacy), è necessario ricevere una notifica al più presto possibile. Stavo pensando di impostare una scadenza sulla cache, ma poi la cache non verrà aggiornata fino a quando la richiesta successiva per i dati viene effettuata dall'applicazione - a quel punto la latenza verrà effettuata a causa della rilettura del database.
Idealmente abbiamo bisogno della cache per restituire un valore scaduto, e in background la cache viene aggiornata/aggiornata con l'ultimo valore dal database a intervalli regolari.
Ciò è possibile con Ehcache? Ho visto SelfPopulatingCache e CacheLoader, ma sembra che sto facendo un sacco di lavoro (dovrei scrivere il codice di scrittura per ogni entità). Inoltre, qualcuno ha un esempio di implementazione di CacheLoader? Speravo in un'opzione di aggiornamento asincrono su Query Cache.
Ci sono altre tecnologie là fuori che potrebbero fornire una soluzione? Non siamo vincolati dal fornitore JPA o dal fornitore di cache.
Potrebbe Spring @Cacheable fornire una soluzione? Ho visto che lo spring ehcache cachable menziona il self-populating-cache-scope, ma non mi è chiaro cosa significhi.
Grazie in anticipo.
Quali sono le opzioni di integrazione disponibili dall'app legacy? – Santosh