pom 采用 spring 自带的 data-redis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
初始化监听容器
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
消息到达后,开启监听业务,处理相关监听数据
@Slf4j
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Autowired
private OrderService orderService;
@Override
public void onMessage(Message message, byte[] pattern) {
log.info("onPMessageinfo开始监听:{}", "pattern = [" + pattern + "], message = [" + message + "]");
//收到消息 key的键值,处理过期提醒
String orderId = message.toString();
//根据key键值判断实现自己的业务逻辑
log.debug("onPMessageinfo结束监听监听:{}", "pattern = [" + pattern + "], message = [" + message + "]");
}
}
注意:若应用部署在多台服务器,监听的时候需要指定一台服务器来实现对应的业务逻辑处理,否则会执行多次