2015-10-29 27 views
6

Sto usando Spring and Spring Security e voglio usare spring-session-data-redis con RedisHttpSessionConfiguration per abilitare l'archiviazione degli ID di sessione su redis (così i client non perdono le loro sessioni quando webapp fallisce e passa a un altro server).Spring session on Redis - qual è il failover quando Redis è inattivo

La mia domanda, cosa succede quando il server Redis non funziona? La primavera potrà continuare a funzionare memorizzando la sessione in memoria fino a quando Redis non viene ripristinato? C'è un modo per configurarlo in questo modo?

Sto utilizzando Redis su AWS ElastiCache e il failover può richiedere diversi minuti prima che il nodo primario di sostituzione sia configurato sul DNS.

+0

Quindi la risposta è no. Se Redis va giù, i dati di primavera-dati-redis falliscono e generano un'eccezione. Qualcuno sa di un'implementazione che non lo fa? con forse i dati di backup nella mappa di memoria? – Berethor

+0

Stavo pensando la stessa cosa qui. Qualsiasi notizia su questo, si prega di aggiornare. –

risposta

0

Per quanto posso vedere, è necessario fornire un'implementazione di CacheErrorHandler (javadoc).

È possibile eseguire questa operazione fornendo un'istanza Configuration, che implementa CachingConfigurer e sovrascrive il metodo errorHandler().

Ad esempio:

@Configuration 
@Ena1bleCaching 
public class MyApp extends SpringBootServletInitializer implements CachingConfigurer { 

    @Override 
    public CacheErrorHandler errorHandler() { 

    return MyAppCacheErrorHandler(); 
    } 

} 

esattamente come sarà quindi fornire un servizio senza interruzioni non è chiaro per me - senza duplicare le sessioni correnti nella cache di failover, sembra impossibile.

Se si utilizza ElasticCache, non è possibile che AWS gestisca una configurazione replicata per l'utente, in modo che se un nodo esegue Doen, l'altro può prendere il sopravvento?