diff --git a/src/main/java/org/redkale/net/client/Client.java b/src/main/java/org/redkale/net/client/Client.java index 844d0a938..5c1e60a7a 100644 --- a/src/main/java/org/redkale/net/client/Client.java +++ b/src/main/java/org/redkale/net/client/Client.java @@ -308,44 +308,39 @@ public abstract class Client, R extends ClientR } public final CompletableFuture newConnection() { - return connect(getAddress(null), WorkThread.currentWorkThread(), -1, false); + return connect(getAddress(null), WorkThread.currentWorkThread(), false); } // 指定地址获取连接 public final CompletableFuture newConnection(final SocketAddress addr) { - return connect(addr, WorkThread.currentWorkThread(), -1, false); + return connect(addr, WorkThread.currentWorkThread(), false); } public final CompletableFuture connect() { - return connect(getAddress(null), WorkThread.currentWorkThread(), -1, true); - } - - public final CompletableFuture connect(int excludeIndex) { - return connect(getAddress(null), excludeIndex > -1 ? null : WorkThread.currentWorkThread(), excludeIndex, true); + return connect(getAddress(null), WorkThread.currentWorkThread(), true); } protected CompletableFuture connect(R request) { - return connect(getAddress(request), request.workThread, -1, true); + return connect(getAddress(request), request.workThread, true); } // 指定地址获取连接 public final CompletableFuture connect(final SocketAddress addr) { - return connect(addr, WorkThread.currentWorkThread(), -1, true); + return connect(addr, WorkThread.currentWorkThread(), true); } // 指定地址获取连接 protected CompletableFuture connect(WorkThread workThread, final SocketAddress addr) { - return connect(addr, workThread, -1, true); + return connect(addr, workThread, true); } // 指定地址获取连接 - private CompletableFuture connect( - @Nonnull SocketAddress addr, @Nullable WorkThread workThread, int excludeIndex, boolean pool) { + private CompletableFuture connect(@Nonnull SocketAddress addr, @Nullable WorkThread workThread, boolean pool) { if (addr == null) { return CompletableFuture.failedFuture(new NullPointerException("address is empty")); } final String traceid = Traces.currentTraceid(); - final AddressConnEntry entry = getAddressConnEntry(addr, workThread, excludeIndex); + final AddressConnEntry entry = getAddressConnEntry(addr, workThread); C ec = entry.connection; if (pool && ec != null && ec.isOpen()) { return CompletableFuture.completedFuture(ec); @@ -410,7 +405,7 @@ public abstract class Client, R extends ClientR } } - private AddressConnEntry getAddressConnEntry(SocketAddress addr, WorkThread workThread, int excludeIndex) { + private AddressConnEntry getAddressConnEntry(SocketAddress addr, WorkThread workThread) { final AddressConnEntry[] entrys = connAddrEntrys.computeIfAbsent(addr, a -> { AddressConnEntry[] array = new AddressConnEntry[connLimit]; for (int i = 0; i < array.length; i++) { @@ -422,17 +417,11 @@ public abstract class Client, R extends ClientR return entrys[workThread.index()]; } int index = workThread == null || workThread.index() < 0 - ? randomIndex(entrys.length, excludeIndex) + ? random.nextInt(entrys.length) : workThread.index() % entrys.length; return entrys[index]; } - private int randomIndex(int len, int excludeIndex) { - if (len == 1) return 0; - int i = random.nextInt(len); - return i != excludeIndex ? i : ((i + 1) < len ? (i + 1) : (i - 1)); - } - protected ClientFuture createClientFuture(ClientConnection conn, R request) { ClientFuture respFuture = new ClientFuture(conn, request); int rts = getReadTimeoutSeconds();