背景
在springboot项目中使用redis失效key回调实现延迟队列
问题
配置类如下
@Component
@Slf4j
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
super.setKeyspaceNotificationsConfigParameter(StringUtils.EMPTY);
}
@Override
public void onMessage(Message message, byte[] pattern) {
}
}
配置监听器后,springboot启动报错:ERR config is disabled command
原因
经排查这个监听类实现在启动时候会向redis发送配置命令,配置延迟参数,由于云服务器关闭了远程配置redis选项导致启动报错
解决
redis延迟参数在云服务器端管理页面设置。 springboot 项目中覆写监听类,避免启动时候设置redis延迟参数。
@Override
public void setKeyspaceNotificationsConfigParameter(String keyspaceNotificationsConfigParameter) {
// 注意这里覆写父类,不在java应用中设置监听. 需要在服务器端设置
super.setKeyspaceNotificationsConfigParameter(StringUtils.EMPTY);
}
全部类内容如下:
@Component
@Slf4j
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
super.setKeyspaceNotificationsConfigParameter(StringUtils.EMPTY);
}
@Override
public void setKeyspaceNotificationsConfigParameter(String keyspaceNotificationsConfigParameter) {
// 注意这里覆写父类,不在java应用中设置监听. 需要在服务器端设置
super.setKeyspaceNotificationsConfigParameter(StringUtils.EMPTY);
}
@Override
public void onMessage(Message message, byte[] pattern) {
}
}