@Override public Server chooseServer(final Object key) { List<Server> serverList; serverList = super.getServerListImpl().getUpdatedListOfServers(); serverList = super.getFilter().getFilteredListOfServers(serverList); if (null == serverList || serverList.isEmpty() || serverList.size() == 1) { return super.chooseServer(key); } final Server server = super.chooseServer(key); final HmilyTransactionContext hmilyTransactionContext = HmilyTransactionContextLocal.getInstance().get(); if (Objects.isNull(hmilyTransactionContext)) { return server; } final String transId = hmilyTransactionContext.getTransId(); //if try if (hmilyTransactionContext.getAction() == HmilyActionEnum.TRYING.getCode()) { SERVER_MAP.put(transId, server); return server; } final Server oldServer = SERVER_MAP.get(transId); SERVER_MAP.remove(transId); if (Objects.nonNull(oldServer)) { for (Server s : serverList) { if (Objects.equals(s, oldServer)) { return oldServer; } } } return server; }
@Override public List<Server> getInitialListOfServers() { return this.serverList.getInitialListOfServers(); }
@Override public List<DiscoveryEnabledServer> getInitialListOfServers() { List<DiscoveryEnabledServer> servers = setZones(this.list .getInitialListOfServers()); return servers; }
@Override public List<Server> getUpdatedListOfServers() { return this.serverList.getUpdatedListOfServers(); }
@RequestMapping("/") public void getServerList() throws Exception { ZoneAwareLoadBalancer<Server> lb = (ZoneAwareLoadBalancer<Server>) clientFactory.getLoadBalancer("myclient"); ServerList<Server> serverList = lb.getServerListImpl(); List<Server> serverDetailList = serverList.getInitialListOfServers(); if (!CollectionUtils.isEmpty(serverDetailList)) { for (Server s : serverDetailList) { System.out.println(s.getHost() + "," + s.getPort()); } } else { System.out.println("no service"); } }
@Override public List<DiscoveryEnabledServer> getUpdatedListOfServers() { List<DiscoveryEnabledServer> servers = setZones(this.list .getUpdatedListOfServers()); return servers; }
public DependenciesBasedLoadBalancer(ZookeeperDependencies zookeeperDependencies, ServerList<?> serverList, IClientConfig config, IPing iPing) { super(config); this.zookeeperDependencies = zookeeperDependencies; setServersList(serverList.getInitialListOfServers()); setPing(iPing); setServerListImpl(serverList); }
@VisibleForTesting public void updateListOfServers() { List<T> servers = new ArrayList<T>(); if (serverListImpl != null) { servers = serverListImpl.getUpdatedListOfServers(); LOGGER.debug("List of Servers for {} obtained from Discovery client: {}", getIdentifier(), servers); if (filter != null) { servers = filter.getFilteredListOfServers(servers); LOGGER.debug("Filtered List of Servers for {} obtained from Discovery client: {}", getIdentifier(), servers); } } updateAllServerList(servers); }