mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-19 08:15:34 +00:00
fix[module] 修复:传入Object,方便取hash
This commit is contained in:
1 parent
1bec708145
commit
4dba2cc35f
3 files changed
+5
-4
No files matched your search
@@ -19,6 +19,7 @@ import com.zfoo.net.task.dispatcher.ITaskDispatch;
|
|||||||
import com.zfoo.net.task.model.PacketReceiverTask;
|
import com.zfoo.net.task.model.PacketReceiverTask;
|
||||||
import com.zfoo.protocol.util.AssertionUtils;
|
import com.zfoo.protocol.util.AssertionUtils;
|
||||||
import com.zfoo.protocol.util.StringUtils;
|
import com.zfoo.protocol.util.StringUtils;
|
||||||
|
import com.zfoo.util.math.HashUtils;
|
||||||
import com.zfoo.util.math.RandomUtils;
|
import com.zfoo.util.math.RandomUtils;
|
||||||
import io.netty.util.concurrent.FastThreadLocalThread;
|
import io.netty.util.concurrent.FastThreadLocalThread;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -122,8 +123,8 @@ public final class TaskBus {
|
|||||||
taskDispatch.getExecutor(task).execute(task);
|
taskDispatch.getExecutor(task).execute(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ExecutorService executor(int executorConsistentHash) {
|
public static ExecutorService executor(Object hashObj) {
|
||||||
return executors[Math.abs(executorConsistentHash % EXECUTOR_SIZE)];
|
return executors[Math.abs(HashUtils.fnvHash(hashObj.hashCode()) % EXECUTOR_SIZE)];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 在task线程的异步请求,请求成功过后依然在相同的task线程执行回调任务
|
// 在task线程的异步请求,请求成功过后依然在相同的task线程执行回调任务
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class ConsistentHashTaskDispatch extends AbstractTaskDispatch {
|
|||||||
if (uid == null) {
|
if (uid == null) {
|
||||||
return SessionIdTaskDispatch.getInstance().getExecutor(packetReceiverTask);
|
return SessionIdTaskDispatch.getInstance().getExecutor(packetReceiverTask);
|
||||||
} else {
|
} else {
|
||||||
return TaskBus.executor(Math.toIntExact(uid));
|
return TaskBus.executor(uid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class SessionIdTaskDispatch extends AbstractTaskDispatch {
|
|||||||
@Override
|
@Override
|
||||||
public ExecutorService getExecutor(PacketReceiverTask packetReceiverTask) {
|
public ExecutorService getExecutor(PacketReceiverTask packetReceiverTask) {
|
||||||
var session = packetReceiverTask.getSession();
|
var session = packetReceiverTask.getSession();
|
||||||
return TaskBus.executor(HashUtils.fnvHash(session.getSid()));
|
return TaskBus.executor(session.getSid());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user