From e1a849e9ce29901db9b418cb1f6e9af8e857105f Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期六, 13 四月 2019 17:52:31 +0800
Subject: [PATCH] 整理文档
---
java110-event/src/main/java/com/java110/event/service/api/ServiceDataFlowEventPublishing.java | 34 +++++++++++++++++++++++++++-------
1 files changed, 27 insertions(+), 7 deletions(-)
diff --git a/java110-event/src/main/java/com/java110/event/service/api/ServiceDataFlowEventPublishing.java b/java110-event/src/main/java/com/java110/event/service/api/ServiceDataFlowEventPublishing.java
index 36d2d3d..6c29fc7 100644
--- a/java110-event/src/main/java/com/java110/event/service/api/ServiceDataFlowEventPublishing.java
+++ b/java110-event/src/main/java/com/java110/event/service/api/ServiceDataFlowEventPublishing.java
@@ -2,7 +2,9 @@
import com.java110.common.constant.CommonConstant;
import com.java110.common.constant.ResponseConstant;
+import com.java110.common.constant.ServiceCodeConstant;
import com.java110.common.exception.BusinessException;
+import com.java110.common.exception.ListenerExecuteException;
import com.java110.common.factory.ApplicationContextFactory;
import com.java110.common.log.LoggerEngine;
import com.java110.common.util.Assert;
@@ -11,6 +13,7 @@
import com.java110.event.center.DataFlowListenerOrderComparator;
import com.java110.event.service.BusinessServiceDataFlowEvent;
import com.java110.event.service.BusinessServiceDataFlowListener;
+import org.springframework.http.HttpMethod;
import java.util.ArrayList;
import java.util.HashMap;
@@ -62,19 +65,26 @@
* @since 1.8
* @return
*/
- public static List<ServiceDataFlowListener> getListeners(String serviceCode){
+ public static List<ServiceDataFlowListener> getListeners(String serviceCode,String httpMethod){
Assert.hasLength(serviceCode,"鑾峰彇闇�瑕佸彂甯冪殑浜嬩欢澶勭悊渚﹀惉鏃讹紝浼犻�掍簨浠朵负绌猴紝璇锋鏌�");
+ String needCachedServiceCode = serviceCode+httpMethod;
//鍏堜粠缂撳瓨涓幏鍙栵紝涓轰簡鎻愬崌鏁堢巼
- if(cacheListenersMap.containsKey(serviceCode)){
- return cacheListenersMap.get(serviceCode);
+ if(cacheListenersMap.containsKey(needCachedServiceCode)){
+ return cacheListenersMap.get(needCachedServiceCode);
}
List<ServiceDataFlowListener> dataFlowListeners = new ArrayList<ServiceDataFlowListener>();
for(String listenerBeanName : getListeners()){
ServiceDataFlowListener listener = ApplicationContextFactory.getBean(listenerBeanName,ServiceDataFlowListener.class);
- if(serviceCode.equals(listener.getServiceCode())){
+ if(serviceCode.equals(listener.getServiceCode())
+ && listener.getHttpMethod() == HttpMethod.valueOf(httpMethod)){
+ dataFlowListeners.add(listener);
+ }
+ //鐗规畩澶勭悊 閫忎紶绫绘帴鍙�
+ if(ServiceCodeConstant.SERVICE_CODE_DO_SERVICE_TRANSFER.equals(listener.getServiceCode())
+ && ServiceCodeConstant.SERVICE_CODE_DO_SERVICE_TRANSFER.equals(serviceCode)){
dataFlowListeners.add(listener);
}
}
@@ -83,7 +93,7 @@
DataFlowListenerOrderComparator.sort(dataFlowListeners);
//灏嗘暟鎹斁鍏ョ紦瀛樹腑
- cacheListenersMap.put(serviceCode,dataFlowListeners);
+ cacheListenersMap.put(needCachedServiceCode,dataFlowListeners);
return dataFlowListeners;
}
@@ -118,7 +128,8 @@
multicastEvent(serviceCode,targetDataFlowEvent, asyn);
}catch (Exception e){
- throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"鍙戝竷渚﹀惉澶辫触锛屽け璐ュ師鍥犱负锛�"+e);
+ logger.error("鍙戝竷渚﹀惉澶辫触锛屽け璐ュ師鍥犱负锛�",e);
+ throw new BusinessException(ResponseConstant.RESULT_CODE_INNER_ERROR,"鍙戝竷渚﹀惉澶辫触锛屽け璐ュ師鍥犱负锛�"+e.getMessage());
}
}
@@ -130,7 +141,14 @@
* @param asyn A 琛ㄧず寮傛澶勭悊
*/
public static void multicastEvent(String serviceCode,final ServiceDataFlowEvent event, String asyn) {
- for (final ServiceDataFlowListener listener : getListeners(serviceCode)) {
+ String httpMethod = event.getDataFlowContext().getRequestCurrentHeaders().get(CommonConstant.HTTP_METHOD);
+ List<ServiceDataFlowListener> listeners = getListeners(serviceCode,httpMethod);
+ //杩欓噷鍒ゆ柇 serviceCode + httpMethod 鐨勪睛鍚紝濡傛灉娌℃湁娉ㄥ唽鐩存帴鎶ラ敊銆�
+ if(listeners == null || listeners.size() == 0){
+ throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR,
+ "鏈嶅姟銆�" + serviceCode + "銆戣皟鐢ㄦ柟寮忋��"+httpMethod+"銆戝綋鍓嶄笉鏀寔");
+ }
+ for (final ServiceDataFlowListener listener : listeners) {
if(CommonConstant.PROCESS_ORDER_ASYNCHRONOUS.equals(asyn)){ //寮傛澶勭悊
@@ -150,6 +168,8 @@
}
}
+
+
/**
* Return the current task executor for this multicaster.
*/
--
Gitblit v1.8.0