//
|
// Source code recreated from a .class file by IntelliJ IDEA
|
// (powered by FernFlower decompiler)
|
//
|
|
package com.ruoyi.system.listener;
|
|
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.context.ApplicationEventPublisherAware;
|
import org.springframework.data.redis.connection.Message;
|
import org.springframework.data.redis.core.RedisKeyExpiredEvent;
|
import org.springframework.data.redis.listener.PatternTopic;
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
import org.springframework.data.redis.listener.Topic;
|
import org.springframework.lang.Nullable;
|
|
public class KeyExpirationEventMessageListener extends KeyspaceEventMessageListener implements ApplicationEventPublisherAware {
|
private static final Topic KEYEVENT_EXPIRED_TOPIC = new PatternTopic("__keyevent@*__:expired");
|
@Nullable
|
private ApplicationEventPublisher publisher;
|
|
public KeyExpirationEventMessageListener(RedisMessageListenerContainer listenerContainer) {
|
super(listenerContainer);
|
}
|
|
@Override
|
protected void doRegister(RedisMessageListenerContainer listenerContainer) {
|
listenerContainer.addMessageListener(this, KEYEVENT_EXPIRED_TOPIC);
|
}
|
|
@Override
|
protected void doHandleMessage(Message message) {
|
this.publishEvent(new RedisKeyExpiredEvent(message.getBody()));
|
}
|
|
protected void publishEvent(RedisKeyExpiredEvent event) {
|
if (this.publisher != null) {
|
this.publisher.publishEvent(event);
|
}
|
|
}
|
|
@Override
|
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
|
this.publisher = applicationEventPublisher;
|
}
|
}
|