LettuceClientConfig.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package com.kym.common.config;
  2. import io.lettuce.core.resource.ClientResources;
  3. import io.lettuce.core.resource.NettyCustomizer;
  4. import io.netty.bootstrap.Bootstrap;
  5. import io.netty.channel.Channel;
  6. import io.netty.channel.ChannelDuplexHandler;
  7. import io.netty.channel.ChannelHandlerContext;
  8. import io.netty.handler.timeout.IdleStateEvent;
  9. import io.netty.handler.timeout.IdleStateHandler;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. /**
  13. * @author skyline
  14. * @description redis lettuce心跳配置
  15. * @date 2023-09-14 13:28
  16. */
  17. @Configuration
  18. public class LettuceClientConfig {
  19. @Bean
  20. public ClientResources clientResources() {
  21. NettyCustomizer nettyCustomizer = new NettyCustomizer() {
  22. @Override
  23. public void afterChannelInitialized(Channel channel) {
  24. channel.pipeline().addLast(
  25. //此处事件必须小于超时时间
  26. new IdleStateHandler(40, 0, 0));
  27. channel.pipeline().addLast(new ChannelDuplexHandler() {
  28. @Override
  29. public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
  30. if (evt instanceof IdleStateEvent) {
  31. ctx.disconnect();
  32. }
  33. }
  34. });
  35. }
  36. @Override
  37. public void afterBootstrapInitialized(Bootstrap bootstrap) {
  38. }
  39. };
  40. return ClientResources.builder().nettyCustomizer(nettyCustomizer).build();
  41. }
  42. }