qq_43704511
会写bug的要饭的
2021-04-26 16:03
采纳率: 60%
浏览 248
已采纳

springcloud gateway一次请求被执行多次

配置文件中配置了路由ip,但我在拦截器中更改了请求url,

//获取域名后的path
                    String rawPath = req.getURI().getRawPath();
                    URI uri = UriComponentsBuilder.fromHttpUrl(enurl+"/test/getId").build().toUri();
                    //重新封装request对象
                    ServerHttpRequest request = req.mutate().uri(uri).build();
//                    Route oldroute = exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
//                    //从新设置Route地址
//                    Route route =
//                        Route.async().asyncPredicate(oldroute.getPredicate()).filters(oldroute.getFilters()).id(oldroute.getId())
//                            .order(oldroute.getOrder()).uri(uri).build();
                    URI mergedUrl = UriComponentsBuilder.fromUri(uri)
                            .scheme(uri.getScheme())
                            .host(uri.getHost())
                            .port("8080")
                            .build()
                            .toUri();
                    //NettyRoutingFilter 最终会从GATEWAY_REQUEST_URL_ATTR 取出uri对象进行http请求,所以这里需要将新的对象覆盖进去
                    exchange.getAttributes().put(ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR,mergedUrl);
                    return chain.filter(exchange.mutate().request(request).build()).then(Mono.fromRunnable(() -> {
                        //请求完成回调方法 可以再此完成计算请求耗时等操作
                    }));

这样就导致请求多次,但被请求接口并无反应;

当我把配置文件中路由更换成该接口的ip,就可以请求到接口

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • qq_43704511
    会写bug的要饭的 2021-04-26 18:49
    已采纳

    添加exchange.getAttributes().put(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR,route);

    点赞 评论
  • software7503

    运行过程有没有抛出异常,贴出来看看。

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-04-26 18:59

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-04-28 14:44

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    点赞 评论
  • u014355128
    萨达大师大师 2021-05-25 22:20

    兄弟,解决了吗

    点赞 评论

相关推荐