Подтвердить что ты не робот

Авто-прокси-службы с обнаружением службы Consul

Я пытаюсь перейти от Eureka к Consul для обнаружения сервисов, и у меня есть проблема - мои реестры служб шлюза и мои регистры обслуживания клиентов, но служба шлюза автоматически не направит запросы на обслуживание клиентов. Маршруты, которые я специально определил в контроллере шлюза, которые используют клиенты "Фейн" для оптимальной работы, но раньше (с Eureka) я мог сделать запрос на любой путь, например "/customer-service/blah" (где клиентское обслуживание - это зарегистрированное имя), и шлюз просто отправит запрос на микросервис ниже по течению.

Вот мой шлюз bootstrap.yml(он в бутстрапе, а не в приложении, потому что я также использую consul для config)

    spring:
  application:
    name: gateway-api
  cloud:
    consul:
      config:
        watch:
          wait-time: 30
      discovery:
        prefer-ip-address: true
        instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
4b9b3361

Ответ 1

Попробуйте это, я думаю, это поможет вам решить вашу проблему.

Это мой файл bootstrap.yml для шлюза

spring:
  application:
    name: gateway-service
---

spring:
  profiles: default
  cloud:
    consul:
      config:
        prefix: config/dev/
        format: FILES
      host: localhost
      port: 8500
      discovery:
        prefer-ip-address: true
spring.profiles.active: dev

Я использую эту зависимость для шлюза и для всех приложений

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>

Консул использует мой сервер конфигурации. то я добавляю консула к этим конфигурациям. путь конфигурации:/config/dev/gateway.yml

zuul:
  prefix: /api
  ignoredServices: '*'
  host:
    connect-timeout-millis: 20000
    socket-timeout-millis: 20000

  routes:
    customer-service:
        path: /customer/**
        serviceId: customer-service
        stripPrefix: false
        sensitiveHeaders: Cookie,Set-Cookie

Служба шлюза spring аннотировать загрузочное приложение, как показано ниже

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy
public class GatewayServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayServiceApplication.class, args);
    } // End main ()

}// End GatewayServiceApplication

если вы сделаете свое приложение таким образом, вы можете использовать маршруты своим предпочитаемым способом.

Пример конфигурации консула введите описание изображения здесь