package com.kym.common.config; import io.lettuce.core.resource.ClientResources; import io.lettuce.core.resource.NettyCustomizer; import io.netty.bootstrap.Bootstrap; import io.netty.channel.Channel; import io.netty.channel.ChannelDuplexHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.timeout.IdleStateEvent; import io.netty.handler.timeout.IdleStateHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author skyline * @description redis lettuce心跳配置 * @date 2023-09-14 13:28 */ @Configuration public class LettuceClientConfig { @Bean public ClientResources clientResources() { NettyCustomizer nettyCustomizer = new NettyCustomizer() { @Override public void afterChannelInitialized(Channel channel) { channel.pipeline().addLast( //此处事件必须小于超时时间 new IdleStateHandler(40, 0, 0)); channel.pipeline().addLast(new ChannelDuplexHandler() { @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { if (evt instanceof IdleStateEvent) { ctx.disconnect(); } } }); } @Override public void afterBootstrapInitialized(Bootstrap bootstrap) { } }; return ClientResources.builder().nettyCustomizer(nettyCustomizer).build(); } }