【发布时间】:2018-09-08 20:33:49
【问题描述】:
我正在尝试使用 spring data redis 设置密钥到期事件处理程序,但无法使其工作。我做了一些研究,但没有产生预期的结果。不知道我错过了什么。当 redis 缓存上的密钥过期时,我想记录一条消息。
@Configuration
@EnableRedisRepositories
public class RedisConfig {
@Bean
StringRedisTemplate stringRedisTemplate(){
StringRedisTemplate stringRedisTemplate = new StringRedisTemplate(jedisConnectionFactory());
return stringRedisTemplate;
}
@Bean
RedisMessageListenerContainer redisContainer() {
RedisMessageListenerContainer container
= new RedisMessageListenerContainer();
container.setConnectionFactory(jedisConnectionFactory());
container.addMessageListener(messageListener(), topic());
return container;
}
@Bean
MessageListenerAdapter messageListener() {
return new MessageListenerAdapter(new RedisMessageSubscriber());
}
@Bean
MessagePublisher redisPublisher() {
return new RedisMessagePublisher();
}
@Bean
ChannelTopic topic() {
return new ChannelTopic("messageQueue");
}
}
public interface MessagePublisher {
void publish(String message);
}
public class RedisMessagePublisher implements MessagePublisher {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private ChannelTopic topic;
public void publish(String message) {
stringRedisTemplate.convertAndSend(topic.getTopic(), message);
}
}
@Service
public class RedisMessageSubscriber implements MessageListener {
private static final Logger LOG = Logger.getLogger(RedisMessageSubscriber.class);
public static List<String> messageList = new ArrayList<String>();
@Override
public void onMessage(Message message, byte[] pattern) {
messageList.add(message.toString());
}
}
有人可以帮忙吗? 谢谢
【问题讨论】:
标签: spring redis spring-data spring-data-redis