我有一个 AWS Redis 集群,其中已启用集群模式,并且已启用静态/传输加密,并且首选传输加密模式。
我正在使用 Java spring 和
redisson
版本 3.12.0 .
下面是我使用
redisson
的连接:
redissonConfig.useClusterServers()
.setKeepAlive(true)
.setConnectTimeout(10000)
.setRetryAttempts(2)
.setDnsMonitoringInterval(10000)
.addNodeAddress("Redis configuration endpoint");
client = Redisson.create(redissonConfig);
我使用这个redis端点:
rediss://ConfigurationEndpoint
当尝试使用 AWS EC2 和 Jposs 从应用程序连接到集群时,我收到此异常
java.nio.channels.ClosedChannelException
,我还看到以下异常
[2023-04-15 14:46:22,296] [redisson-netty-2-3] [WARN] ChannelInitializer- Failed to initialize a channel. Closing: [id: 0x77267167]
io.netty.channel.ChannelPipelineException: io.netty.handler.ssl.SslHandler.handlerAdded() has thrown an exception; removed.
at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:624) ~[netty-transport-4.1.46.Final.jar:4.1.46.Final]
at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:223) ~[netty-transport-4.1.46.Final.jar:4.1.46.Final]
at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:381) ~[netty-transport-4.1.46.Final.jar:4.1.46.Final]
at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:370) ~[netty-transport-4.1.46.Final.jar:4.1.46.Final]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_362]
Caused by: java.lang.NoSuchFieldError: TCP_FASTOPEN_CONNECT
at io.netty.handler.ssl.SslHandler.handlerAdded(SslHandler.java:1979) ~[netty-handler-4.1.72.Final.jar:4.1.72
[redisson-netty-2-3] [WARN] ChannelInitializer- Failed to initialize a channel. Closing: [id: 0xe1c3fece]
io.netty.channel.ChannelPipelineException: io.netty.handler.ssl.SslHandler.handlerAdded() has thrown an exception; removed.
我花了超过 15 个小时试图解决这个问题,但没有成功,我也在互联网上搜索了此类错误,但没有结果,如果你有任何想法,感谢你的支持。
谢谢
引起:java.lang.NoSuchFieldError:TCP_FASTOPEN_CONNECT
它告诉你在类路径中可能有不同的 netty 版本
我会回答我的问题,我能够通过升级io.netty解决这个问题。版本为4.1.72.Final,如下
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.72.Final</version>
</dependency>
主要问题是 io.netty 版本冲突,我的应用程序中使用了多个版本。