diff --git a/net/src/main/java/com/zfoo/net/task/TaskBus.java b/net/src/main/java/com/zfoo/net/task/TaskBus.java index af12e816..84759249 100644 --- a/net/src/main/java/com/zfoo/net/task/TaskBus.java +++ b/net/src/main/java/com/zfoo/net/task/TaskBus.java @@ -19,6 +19,7 @@ import com.zfoo.net.task.dispatcher.ITaskDispatch; import com.zfoo.net.task.model.PacketReceiverTask; import com.zfoo.protocol.util.AssertionUtils; import com.zfoo.protocol.util.StringUtils; +import com.zfoo.util.math.HashUtils; import com.zfoo.util.math.RandomUtils; import io.netty.util.concurrent.FastThreadLocalThread; import org.slf4j.Logger; @@ -122,8 +123,8 @@ public final class TaskBus { taskDispatch.getExecutor(task).execute(task); } - public static ExecutorService executor(int executorConsistentHash) { - return executors[Math.abs(executorConsistentHash % EXECUTOR_SIZE)]; + public static ExecutorService executor(Object hashObj) { + return executors[Math.abs(HashUtils.fnvHash(hashObj.hashCode()) % EXECUTOR_SIZE)]; } // 在task线程的异步请求,请求成功过后依然在相同的task线程执行回调任务 diff --git a/net/src/main/java/com/zfoo/net/task/dispatcher/ConsistentHashTaskDispatch.java b/net/src/main/java/com/zfoo/net/task/dispatcher/ConsistentHashTaskDispatch.java index e26a2994..f723d63e 100644 --- a/net/src/main/java/com/zfoo/net/task/dispatcher/ConsistentHashTaskDispatch.java +++ b/net/src/main/java/com/zfoo/net/task/dispatcher/ConsistentHashTaskDispatch.java @@ -42,7 +42,7 @@ public class ConsistentHashTaskDispatch extends AbstractTaskDispatch { if (uid == null) { return SessionIdTaskDispatch.getInstance().getExecutor(packetReceiverTask); } else { - return TaskBus.executor(Math.toIntExact(uid)); + return TaskBus.executor(uid); } } diff --git a/net/src/main/java/com/zfoo/net/task/dispatcher/SessionIdTaskDispatch.java b/net/src/main/java/com/zfoo/net/task/dispatcher/SessionIdTaskDispatch.java index 18e136dc..0a67eb39 100644 --- a/net/src/main/java/com/zfoo/net/task/dispatcher/SessionIdTaskDispatch.java +++ b/net/src/main/java/com/zfoo/net/task/dispatcher/SessionIdTaskDispatch.java @@ -36,7 +36,7 @@ public class SessionIdTaskDispatch extends AbstractTaskDispatch { @Override public ExecutorService getExecutor(PacketReceiverTask packetReceiverTask) { var session = packetReceiverTask.getSession(); - return TaskBus.executor(HashUtils.fnvHash(session.getSid())); + return TaskBus.executor(session.getSid()); } }