mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-08-11 16:26:40 +00:00
doc[module]:Event模块注册注释
This commit is contained in:
@@ -36,14 +36,15 @@ public abstract class EventBus {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(EventBus.class);
|
||||
|
||||
// 线程池的大小
|
||||
/**
|
||||
* 线程池的大小. event的线程池比较大
|
||||
*/
|
||||
public static final int EXECUTORS_SIZE = Runtime.getRuntime().availableProcessors() * 2;
|
||||
|
||||
private static final ExecutorService[] executors = new ExecutorService[EXECUTORS_SIZE];
|
||||
|
||||
private static final Map<Class<? extends IEvent>, List<IEventReceiver>> receiverMap = new HashMap<>();
|
||||
|
||||
|
||||
static {
|
||||
for (int i = 0; i < executors.length; i++) {
|
||||
var namedThreadFactory = new EventThreadFactory(i + 1);
|
||||
@@ -85,16 +86,28 @@ public abstract class EventBus {
|
||||
}
|
||||
|
||||
/**
|
||||
* 随机获取一个线程池
|
||||
* 随机获取一个线程
|
||||
*/
|
||||
public static Executor asyncExecute() {
|
||||
return executors[RandomUtils.randomInt(EXECUTORS_SIZE)];
|
||||
}
|
||||
|
||||
/**
|
||||
* 用指定线程执行
|
||||
*
|
||||
* @param hashcode
|
||||
* @return
|
||||
*/
|
||||
public static Executor execute(int hashcode) {
|
||||
return executors[Math.abs(hashcode % EXECUTORS_SIZE)];
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行方法调用
|
||||
*
|
||||
* @param event 事件
|
||||
* @param receiverList 所有的观察者
|
||||
*/
|
||||
private static void doSubmit(IEvent event, List<IEventReceiver> receiverList) {
|
||||
for (var receiver : receiverList) {
|
||||
try {
|
||||
@@ -107,6 +120,12 @@ public abstract class EventBus {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册事件及其对应观察者
|
||||
*
|
||||
* @param eventType
|
||||
* @param receiver
|
||||
*/
|
||||
public static void registerEventReceiver(Class<? extends IEvent> eventType, IEventReceiver receiver) {
|
||||
receiverMap.computeIfAbsent(eventType, it -> new LinkedList<>()).add(receiver);
|
||||
}
|
||||
|
||||
@@ -81,6 +81,8 @@ public class EventRegisterProcessor implements BeanPostProcessor {
|
||||
|
||||
var receiverDefinition = new EventReceiverDefinition(bean, method, eventClazz);
|
||||
var enhanceReceiverDefinition = EnhanceUtils.createEventReceiver(receiverDefinition);
|
||||
|
||||
// key:class类型 value:观察者 注册Event的receiverMap中
|
||||
EventBus.registerEventReceiver(eventClazz, enhanceReceiverDefinition);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
|
||||
@@ -32,6 +32,8 @@ public interface IConsumer {
|
||||
|
||||
/**
|
||||
* 直接发送,不需要任何返回值
|
||||
* <p>
|
||||
* 例子:参考 com.zfoo.app.zapp.chat.controller。FrinedController 的 atApplyFriendRequest方法,客户端发起申请请求,chat服务处理后,再把消息直接发给网关
|
||||
*
|
||||
* @param packet 需要发送的包
|
||||
* @param argument 计算负载均衡的参数,比如用户的id
|
||||
|
||||
Reference in New Issue
Block a user