dengsixing 3 rokov pred
rodič
commit
bf61d99a84

+ 18 - 1
4dkankan-center-scene/src/main/java/com/fdkankan/scene/controller/TestController.java

@@ -23,6 +23,7 @@ import com.fdkankan.scene.service.IScene3dNumService;
 import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.scene.vo.SceneVO;
 import com.fdkankan.scene.vo.SceneVO;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Lists;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
@@ -43,6 +44,7 @@ import java.util.UUID;
 @RefreshScope
 @RefreshScope
 @RestController
 @RestController
 @RequestMapping("/api/scene/test")
 @RequestMapping("/api/scene/test")
+@Slf4j
 public class TestController {
 public class TestController {
 
 
 
 
@@ -76,7 +78,22 @@ public class TestController {
 //        for (int i = 0; i< 10; i++){
 //        for (int i = 0; i< 10; i++){
 //            rocketMQProducer.syncSend("qwe",i+"",  "消息体"+i);
 //            rocketMQProducer.syncSend("qwe",i+"",  "消息体"+i);
 //        }
 //        }
-        String test = "123";
+//        try {
+
+//            String aaa = null;
+//            aaa.equals("123");
+
+//            String test = "123";
+//            if(test.equals("123")){
+//                throw new BusinessException(-1, "dsfasdfsdf");
+//
+//            }
+//        }catch (BusinessException e){
+//            log.error("发生了错误:{}", e.getMessage());
+//        }catch (Exception e){
+//            log.error("发生了未知错误:{}", e);
+//        }
+//        String test = "123";
 //        if(test.equals("123")){
 //        if(test.equals("123")){
 //            throw new BusinessException(-1, "dsfasdfsdf");
 //            throw new BusinessException(-1, "dsfasdfsdf");
 //
 //

+ 1 - 1
4dkankan-center-scene/src/main/resources/META-INF/services/com.alibaba.csp.sentinel.init.InitFunc

@@ -1 +1 @@
-com.fdkankan.common.config.DataSourceInitFunc
+com.fdkankan.common.config.SentinelDataSourceInitFunc

+ 1 - 1
4dkankan-center-scene/src/main/resources/bootstrap.yml

@@ -46,7 +46,7 @@ spring:
         namespace: 4dkankan-dev
         namespace: 4dkankan-dev
     sentinel:
     sentinel:
       transport:
       transport:
-        dashboard: localhost:8888
+        dashboard: 192.168.0.47:8888
         heartbeat-interval-ms: 500
         heartbeat-interval-ms: 500
         port: 8719
         port: 8719
       eager: true #取消sentinel控制台懒加载
       eager: true #取消sentinel控制台懒加载

+ 1 - 1
4dkankan-common/src/main/java/com/fdkankan/common/config/DataSourceInitFunc.java

@@ -29,7 +29,7 @@ import java.util.List;
  * @author dengsixing
  * @author dengsixing
  * @since 2022/1/26
  * @since 2022/1/26
  **/
  **/
-public class DataSourceInitFunc implements InitFunc {
+public class SentinelDataSourceInitFunc implements InitFunc {
 
 
     @Override
     @Override
     public void init() throws Exception {
     public void init() throws Exception {

+ 29 - 28
4dkankan-common/src/main/java/com/fdkankan/common/exception/GlobalExceptionHandler.java

@@ -1,15 +1,14 @@
 package com.fdkankan.common.exception;
 package com.fdkankan.common.exception;
 
 
 import cn.hutool.core.exceptions.ExceptionUtil;
 import cn.hutool.core.exceptions.ExceptionUtil;
-import com.alibaba.csp.sentinel.slots.block.degrade.DegradeException;
-import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import com.alibaba.csp.sentinel.Tracer;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.ErrorCode;
 import com.fdkankan.common.constant.ServerCode;
 import com.fdkankan.common.constant.ServerCode;
-import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.response.ResultData;
 import com.fdkankan.common.response.ResultData;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.MediaType;
 import org.springframework.validation.BindException;
 import org.springframework.validation.BindException;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.FieldError;
 import org.springframework.validation.FieldError;
@@ -19,10 +18,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-
 /**
 /**
  * 全局异常处理器
  * 全局异常处理器
  */
  */
@@ -35,27 +30,33 @@ public class GlobalExceptionHandler {
      */
      */
     @ResponseBody
     @ResponseBody
     @ExceptionHandler(value = Exception.class)
     @ExceptionHandler(value = Exception.class)
-    public void exceptionHandler(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Exception e) throws Exception {
-        try{
-//            log.error("服务错误:", e);
-//            return ResultData.error(ServerCode.SYSTEM_ERROR.code(), ExceptionUtil.stacktraceToString(e, 3000));
-            // http状态码
-            httpServletResponse.setStatus(500);
-            httpServletResponse.setCharacterEncoding("utf-8");
-            httpServletResponse.setHeader("Content-Type", "application/json;charset=utf-8");
-            httpServletResponse.setContentType(MediaType.APPLICATION_JSON_VALUE);
-
-            new ObjectMapper()
-                    .writeValue(
-                            httpServletResponse.getWriter(),
-                            ResultData.error(ServerCode.SYSTEM_ERROR.code(), ExceptionUtil.stacktraceToString(e, 3000))
-                    );
-        }finally {
-            //最后抛出异常是为了sentinel熔断异常处理器能捕获到异常,进入熔断处理逻辑
-            throw  e;
-        }
+    public ResultData exceptionHandler(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Exception e) throws Exception {
+            log.error("服务错误:", e);
+            //增加sentinel异常次数
+            Tracer.trace(e);
+            return ResultData.error(ServerCode.SYSTEM_ERROR.code(), ExceptionUtil.stacktraceToString(e, 3000));
     }
     }
 
 
+    /**
+     * 限流熔断异常处理
+     * 如果在这里捕获的话,就需要在接口中加入@SentinelResour注解
+     */
+//    @ResponseBody
+//    @ExceptionHandler({FlowException.class, DegradeException.class})
+//    public ResultData flowExceptionHandler(HttpServletRequest httpServletRequest, Exception e) {
+//        String requestURI = httpServletRequest.getRequestURI();
+//        String resource = null;
+//        if(e instanceof FlowException){
+//            resource = ((FlowException) e).getRule().getResource();
+//        }
+//        if(e instanceof DegradeException){
+//            resource = ((DegradeException) e).getRule().getResource();
+//        }
+//
+//        log.error("请求限流:requestURI{},resource:{}", requestURI, resource);
+//        return ResultData.error(ServerCode.SYSTEM_ERROR.code(), "系统繁忙,请稍后重试");
+//    }
+
 
 
     /**
     /**
      * 校验错误拦截处理
      * 校验错误拦截处理