有没有一种方法可以从Netflix Ribbon静态服务器列表中获取活动服务器

问题描述

我正在尝试获取服务器列表以进行客户端负载平衡。请注意,我正在尝试基于套接字的连接。 在this.loadBalancerClient.choose("tcpclient")中,我希望功能区连接到所有活动的服务器,但是我会获得该属性中定义的所有服务器列表,并且在通过socket.connect()连接时,由于连接被拒绝,我会遇到异常。有人可以让我知道我在想什么。 下面是代码段。

application.properties

tcpclient.ribbon.eureka.enabled=false
tcpclient.ribbon.ActiveConnectionsLimit=5
tcpclient.ribbon.NFLoadBalancerPingClassName=com.netflix.loadbalancer.PingUrl
tcpclient.listofServers=10.156.23.556:55005,10.156.23.557:55005,10.156.23.558:15006,10.156.23.559:15006
tcpclient.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.AvailabilityFilteringRule


public class ClientLoadBalancer {

    @Autowired
    private LoadBalancerClient loadBalancerClient;

    
    public String connectServer() {
        ServiceInstance serviceInstance;
        String host = null;
        int port = 0;
        try (Socket socket = new Socket()) {
            try {
                serviceInstance = this.loadBalancerClient.choose("tcpclient");
                host = serviceInstance.getHost();
                port = serviceInstance.getPort();
                System.out.println("Connecting with Host: " + host + "Port:" + port);
                socket.connect(new InetSocketAddress(serviceInstance.getHost(),serviceInstance.getPort()));
            } catch (final IOException e) {
                e.printstacktrace();
            }
        } catch (final Exception e) {
            e.printstacktrace();
        }
        return "Connecting with Host: " + host + " Port:" + port;
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)