Spring Cloud Gateway 網關過濾器中請求網關,首次請求出現 .java.net.SocketTimeoutException: Read

問題描述:如標題

代碼:

@Slf4j
@Component
public class MyAuthorizationFilter implements GlobalFilter, Ordered {

    private static final ObjectMapper OM = new ObjectMapper();

    @Autowired
    private AuthorClient authorClient;

    @Override
    public int getOrder() {
        return -200;
    }

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        ServerHttpRequest request = exchange.getRequest();
        URI uri = request.getURI();
        GsonUtils.prettyInfoPrint(String.format("接收到請求:%s", uri.getPath()));
        

        // 登陸 這邊時發起登錄請求,走本身這個網關,第一次會超時
        Object data = authorClient.login(request);
        return completeFilter(exchange.getResponse(), data);
        
    }

    private Mono<Void> completeFilter(ServerHttpResponse response, Object data) {
        if (data != null) {
            response.getHeaders().add("Content-Type",
                    MediaType.APPLICATION_JSON_UTF8_VALUE);
            byte[] bytes = getDataAsBytes(data);
            DataBuffer buffer = response.bufferFactory().wrap(bytes);
            return response.writeWith(Flux.just(buffer));
        }
        return response.setComplete();
    }

    private byte[] getDataAsBytes(Object data) {
        try {
            return OM.writeValueAsBytes(data);
        } catch (JsonProcessingException e) {
            log.error("轉換 Object - Bytes 失敗", e);
        }
        return GsonUtils.toJson(Result.out(ResultCode.FAIL))
                .getBytes(StandardCharsets.UTF_8);
    }

}

代碼中 帶有註解的這一段是發起http請求代碼:有沒有人遇到過這樣的問題?求解!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章