在我们的组织中,目前我们正在使用基于 mule 的 RAML API(版本3.9.0),该 API 存在 CVE 安全问题。 因此,我们计划使用 Spring Cloud Gateway 更改我们的 API。 我对此有点陌生,因此在集成到实际应用程序之前先探索网关功能。 我在重试 GatewayFilter 中遇到问题,它没有对配置的失败情况进行重试。 这是我的配置,
spring:
application:
name: tp-demo-ms
cloud:
gateway:
routes:
- id: demo-router
uri: http://localhost:8080/demo/hello/{name}
predicates:
- Path=/demo/hello/**
- Host=**10.1.0.0**
- Method=GET
filters:
- name: Retry
args:
retries: 3
statuses: BAD_GATEWAY, GATEWAY_TIMEOUT, INTERNAL_SERVER_ERROR,**NOT_FOUND**
methods: POST
backoff:
** firstBackoff: 10ms
maxBackoff: 50ms**
factor: 2
basedOnPreviousValue: false
我在调用另一个微服务时遇到以下异常,
{"timestamp":"2023-05-16T10:06:02.203+05:30","version":"1","message":"已执行==>'/demo/hello/'状态为[404未找到]"}
非常感谢对此的任何帮助。
我尝试到达端点
http://localhost:8888/demo/hello/name
,它抛出 404 NOT_FOUND 异常。
但它没有按照我的重试退避配置进行重试。 当我从控制台到达端点后,我可以看到没有重试发生。
我认为你应该用
uri : http://localhost:8080/demo/hello/{name}
替换 uri : http://localhost:8080
因为你已经将路径与 predicates : - Path : /demo/hello/**
匹配
我建议你阅读 Spring Cloud Gateway 文档,它非常有用。
https://cloud.spring.io/spring-cloud-gateway/reference/html/
此外,您还可以使用eureka进行注册服务。