ClickActionDispatcher.java 1.81 KB
//package com.yoho.unions.kafka.consumer;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import org.apache.commons.collections.CollectionUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Service;
//
//import com.alibaba.fastjson.JSONObject;
//import com.yoho.unions.kafka.consumer.handler.ClickEventHandIntf;
//
//
//@Service
//public class ClickActionDispatcher {
//	private static final Logger logger = LoggerFactory.getLogger(ClickActionDispatcher.class);
//
//	/**
//	 * 只有bean初始化时修改,后续只作读取,线程安全
//	 */
//	private Map<String, List<ClickEventHandIntf>> handlerMap = new HashMap<>();
//
//	/**
//	 * handler注册
//	 * @param eventKey
//	 * @param handler
//	 */
//	synchronized public void register(String eventKey, ClickEventHandIntf handler) {
//		if(eventKey == null || handler == null) {
//			logger.warn("invalid click event handler, key: {}, handler:{}", eventKey, handler);
//			return;
//		}
//
//		List<ClickEventHandIntf> handlerList = handlerMap.get(eventKey);
//		if(handlerList == null) {
//			handlerList = new ArrayList<>();
//			handlerMap.put(eventKey, handlerList);
//		}
//
//		handlerList.add(handler);
//		logger.info("register handler, event: {}, handler: {}", eventKey, handler);
//	}
//
//	/**
//	 * 点击事件分发处理
//	 * @param eventJson
//	 */
//	public void dispatch(JSONObject eventJson) {
//		if(eventJson == null)
//			return;
//
//		String op = eventJson.getString("op");
//		if(op == null)
//			return;
//
//		List<ClickEventHandIntf> handlerList = handlerMap.get(op.toUpperCase());
//		if(CollectionUtils.isEmpty(handlerList))
//			return;
//
//		for(ClickEventHandIntf handler : handlerList) {
//			handler.process(eventJson);
//		}
//	}
//}