|
|
@@ -0,0 +1,50 @@
|
|
|
+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();
|
|
|
+ }
|
|
|
+}
|