无法在Spring Redis Session + Spring引导环境中捕获SessionDestroyed事件

时间:2016-07-21 16:58:30

标签: spring-boot redis spring-session

我有一个由Redis支持的Spring Session的Spring Boot项目。我正在尝试捕获sessionDestroyed事件,以便我可以执行一些清理。

捕获事件的代码如下所示,我在Stack Overflow的其他地方找到的指导。

 @Component
 public class SessionEndedListener implements     ApplicationListener<SessionDestroyedEvent> {


private final Logger LOGGER = LoggerFactory.getLogger(getClass());

@Override
public void onApplicationEvent(SessionDestroyedEvent event) {

    LOGGER.info("Destroyed session: {}", event.getSessionId()); 

}

}

我已经设置了我的Redis会话配置

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 120)
public class RedisSessionConfig {
}

我可以看到Spring Redis的一些日志每分钟清理过期的会话,如下所示

2016-07-21 11:07:00,026 ==== RedisSessionExpirationPolicy.java ==== thread:pool-4-thread-1 ==== DEBUG&gt; org.springframework.session.data.redis.RedisSessionExpirationPolicy.cleanExpiredSessions()=&gt; [](行:107)     清理会议将于2016年7月21日星期四11:07:00到期。

但是从不调用用于捕获SessionDestroyedEvent的代码。 我在这里缺少什么?

请注意,我正在使用本地Redis服务器对此进行测试,其中将关键空间事件配置为Egx没有问题。

当我通过代码调试时。

本声明

   if(!body.startsWith("spring:session:sessions:")) {
       return;
    }
在课堂上

org.springframework.session.data.redis.SessionMessageListener在有机会发布事件之前提前返回

因为变量体具有值

  

\xac\xed\x00\x05t\x00<spring:session:sessions:2392443d-62a9-4f8c-81f0-c0bb446eb16f

我正在使用spring-session 1.0.2.RELEASE。是否有修复过的错误?

0 个答案:

没有答案