1234567891011121314151617181920212223242526272829303132333435363738 |
- package org.jeecg.handler;
- import com.alibaba.csp.sentinel.adapter.gateway.sc.callback.BlockRequestHandler;
- import com.alibaba.csp.sentinel.transport.config.TransportConfig;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.cloud.commons.util.InetUtils;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.MediaType;
- import org.springframework.stereotype.Component;
- import org.springframework.web.reactive.function.BodyInserters;
- import org.springframework.web.reactive.function.server.ServerResponse;
- import org.springframework.web.server.ServerWebExchange;
- import reactor.core.publisher.Mono;
- import javax.annotation.PostConstruct;
- /**
- * 自定义限流返回信息
- * @author Administrator
- */
- @Slf4j
- @Component
- public class SentinelBlockRequestHandler implements BlockRequestHandler {
- @Autowired
- private InetUtils inetUtils;
- @PostConstruct
- public void doInit() {
- System.setProperty(TransportConfig.HEARTBEAT_CLIENT_IP, inetUtils.findFirstNonLoopbackAddress().getHostAddress());
- }
- @Override
- public Mono<ServerResponse> handleRequest(ServerWebExchange exchange, Throwable ex) {
- String resultString = "{\"code\":403,\"message\":\"服务开启限流保护,请稍后再试!\"}";
- return ServerResponse.status(HttpStatus.TOO_MANY_REQUESTS).contentType(MediaType.APPLICATION_JSON_UTF8).body(BodyInserters.fromObject(resultString));
- }
- }
|