private Mono<? extends Connection> initTcpConnection(String host, int port) {
        TcpClient client = TcpClient.newConnection()
                .host(host)
                .port(port)
                .metrics(true,
                        () -> new TurmsMicrometerChannelMetricsRecorder(TURMS_RPC_CLIENT_TCP))
                .runOn(eventLoopGroupForClients);
        if (clientSsl.isEnabled()) {
            client = client.secure(sslContextSpec -> SslUtil.configureSslContextSpec(sslContextSpec,
                    SslContextSpecType.TCP,
                    clientSsl,
                    false));
        }
        return client.connect();
    }
Use supplier rather than just listener so that we can bind each generated listener to a
specific TcpConnection to make logic simple
turms-server-common/src/main/java/im/turms/server/common/infra/cluster/service/connection/ConnectionService.java