当我使用带有固定 ConnectionProvider 的 TCP 客户端时,我无法重用连接。
他们使连接超过了 maxConnection 变量。
这就是我写的。
即使我像 'ConnectionProvider.fixed("TEST", 10)' 那样使用 10 个 maxConnection,也有 22 个空闲连接。我的天啊
//NettyClient.java
@AllArgsConstructor
public class NettyClient {
private final int port;
public final ConnectionProvider connectionProvider = ConnectionProvider.fixed("TEST", 10);
public void sendTest() {
TcpClient c = TcpClient
.create(connectionProvider)
.port(port)
.handle((in, out) -> {
return out
.sendString(Mono.just("string"))
.then(in
.receive()
.asString()
.flatMap(ss -> {
out.withConnection(connection -> {
connection.disposeNow();
});
return Mono.empty();
}));
})
.option(ChannelOption.SO_KEEPALIVE, true)
.wiretap(true);
c.connect().subscribe();
}
}
//NettyClientTest.java
public class NettyClientTest {
@Test
public void send() throws InterruptedException {
NettyClient nettyClient = new NettyClient(11);
for (int i = 0; i < 20; i++) {
nettyClient.sendTest();
}
nettyClient.sendTest();
nettyClient.sendTest();
}
}
14:55:27.397 [reactor-tcp-nio-5] 调试 reactor.netty.resources.PooledConnectionProvider - [id: 0x3444910e, L:/0:0:0:0:0:0:0:1:53928 !R:/0:0:0:0:0:0:0:1:33333] 通道已清理,现在 0 个活动连接和 22 个非活动连接