Первый загрузчик Spring Discovery не находит ConfigServer - PullRequest
0 голосов
/ 13 февраля 2019

В настоящее время я использую Spring Boot Services с Discovery First.Запуск сервисов один за другим работает просто отлично, но у меня возникают проблемы с одновременным запуском сервисов через docker-compose.

Кажется, что первый загрузчик обнаружения не работает, как я ожидал.Я бы предположил, что служба будет останавливаться / повторяться, пока он не получит конфигурацию от службы конфигурации, которая была обнаружена через eureka.Но в настоящее время он попытается разрешить конфигурацию один раз, а затем служба запустится сразу после - независимо от того, была ли конфигурация введена или нет.

Начальная загрузка службы выглядит следующим образом:

spring:
  application:
    name: my-service
  cloud:
    config:
      fail-fast: false
      discovery:
        enabled: true
        service-id: configserver
      retry:
        initialInterval: 2000
        multiplier: 1.5
        maxInterval: 60000
        maxAttempts: 10

server:
  port: ${APPLICATION_PORT:16000}
eureka:
  client:
    serviceUrl:
      defaultZone: http://${EUREKA_HOSTNAME:localhost}:15000/eureka/

Конфигурация eureka выглядит следующим образом:

spring:
  application:
    name: manager
server:
  port: 15000
eureka:
  client:
    registerWithEureka: true
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${EUREKA_HOSTNAME:localhost}:15000/eureka/

Последнее, но не менее важное - конфигурация configserver выглядит следующим образом:

spring:
  application:
    name: configserver
  cloud:
    config:
      fail-fast: true
server:
  port: 15001
eureka:
  client:
    serviceUrl:
      defaultZone: http://${EUREKA_HOSTNAME:localhost}:15000/eureka/

Кто-нибудь может дать здесь какой-нибудь совет?

1 Ответ

0 голосов
/ 13 февраля 2019

Я нашел проблему:

На самом деле я обнаружил две проблемы на нашей стороне.Первый не имеет подходящего интервала продления аренды.Клиент только что повторил попытку получения конфигурации с кэшированными сервисами.Поскольку кэшированные сервисы не содержали сервис конфигурации, он не смог получить правильную конфигурацию.

Вторая проблема заключалась в том, чтобы не ждать достаточно времени.Это было исправлено в повышении maxAttempts выше.Таким образом, у служб конфигурации и обнаружения достаточно времени для запуска.

Конфигурация клиента теперь выглядит следующим образом:

spring:
  application:
    name: service
  cloud:
    config:
      fail-fast: true
      discovery:
        enabled: true
        service-id: CONFIGSERVER
      retry:
        initialInterval: 2000
        multiplier: 1.5
        maxInterval: 60000
        maxAttempts: 100

server:
  port: ${APPLICATION_PORT:16000}
eureka:
  instance:
    lease-renewal-interval-in-seconds: 10
  client:
    fetch-registry: true
    serviceUrl:
      defaultZone: http://${EUREKA_HOSTNAME:localhost}:15000/eureka/
...