Как сделать весенние облачные заглушки для заглушек в Eureka Discovery? - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь зарегистрировать свои заглушки для облачных контрактов в работающей службе обнаружения Eureka для тестирования дыма.Сам stubrunner успешно зарегистрирован в обнаружении службы, но конечные точки, предоставленные заглушками, не достижимы, как ожидалось.

Заглушки должны заменить реальный микросервис masterdata (rest apis).

Stubrunner основной класс:

@SpringBootApplication
@EnableStubRunnerServer
@EnableEurekaClient
@AutoConfigureStubRunner
class EurekaStubRunnerApplication

fun main(args: Array<String>) {
    runApplication<EurekaStubRunnerApplication>(*args)
}

Stubrunner bootstrap.yml

spring:
  application:
    name: masterdata
jhipster:
  registry:
    password: admin

Stubrunner application.yml

eureka:
  client:
    service-url:
      defaultZone: http://admin:${jhipster.registry.password}@localhost:8761/eureka/
    enabled: true
    healthcheck:
      enabled: false
    fetch-registry: true
    register-with-eureka: true
    instance-info-replication-interval-seconds: 10
    registry-fetch-interval-seconds: 10
  instance:
    appname: masterdata
    instance-id: masterdata:${spring.application.instance-id:${random.value}}
    lease-renewal-interval-in-seconds: 5
    lease-expiration-duration-in-seconds: 10
    status-page-url-path: management/info
    health-check-url-path: management/health
ribbon:
  eureka:
    enabled: true
server:
  port: 8888
stubrunner:
  cloud:
    eureka:
      enabled: true
    stubbed:
      discovery:
        enabled: true

Команда для запуска заглушки:

java -jar eureka-stub-runner-0.0.1-SNAPSHOT.jar --stubrunner.ids=com.xetics.mes:masterdata-stubs:+:8081 --stubrunner.stubsMode=LOCAL

Когда я запускаю реальную службу masterdata, я могу вызвать конечную точку API через работающий шлюз:

curl -X GET --header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTU0NjYxMDc2OH0.EF3PHho-B-ayOmmeFrcA90U38cd3AZsU7pA7-9xN0SpuVBvev2sHvejv-FI_FlrwP7qWcCpibW-yWwFDBSUv9w' 'http://localhost:8080/masterdata/api/stations'
[]

Тот же вызов с заглушками, запущенными в модуле заглушек:

curl -X GET --header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTU0NjYxMDc2OH0.EF3PHho-B-ayOmmeFrcA90U38cd3AZsU7pA7-9xN0SpuVBvev2sHvejv-FI_FlrwP7qWcCpibW-yWwFDBSUv9w' 'http://localhost:8080/masterdata/api/stations'
{"timestamp":"2019-01-03T16:59:36.426+0000","status":404,"error":"Not Found","message":"No message available","path":"/api/stations"}

Хотя я могу вызывать заглушки напрямую:

curl -X GET --header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTU0NjYxMDc2OH0.EF3PHho-B-ayOmmeFrcA90U38cd3AZsU7pA7-9xN0SpuVBvev2sHvejv-FI_FlrwP7qWcCpibW-yWwFDBSUv9w' 'http://localhost:8081/api/stations'
[{"archiveTime":null,"description":"A fantastic base for building a time machine","id":1985,"maxCapacity":2,"name":"DeLorean DMC 12","icon":"delorean-icon"},{"archiveTime":null,"description":"A handy tool for manipulating the space time continuum","id":2015,"maxCapacity":1,"name":"Flux capacitor"}]

Что я делаю не так?Насколько я понял, проблема https://github.com/spring-cloud/spring-cloud-contract/pull/64, должна быть возможность зарегистрировать заглушки на сервере Eureka, а также?

Я также безуспешно прочитал следующие документы:

1 Ответ

0 голосов
/ 05 января 2019

Проблема была вызвана неправильной настройкой приложения.

...
stubrunner:
  cloud:
    eureka:
      enabled: true
    stubbed:
      discovery:
        # must be false instead of
        enabled: true

Кроме того, мне нужно было добавить сопоставление службы, поскольку мой идентификатор артефакта заглушек заглушки masterdata , тогда как идентификатор службы для вызова: masterdata .

Рабочий application.yml теперь выглядит так:

eureka:
  client:
    service-url:
      defaultZone: http://admin:${jhipster.registry.password}@localhost:8761/eureka/
    enabled: true
    healthcheck:
      enabled: false
    fetch-registry: true
    register-with-eureka: true
    instance-info-replication-interval-seconds: 10
    registry-fetch-interval-seconds: 10
  instance:
    appname: stubrunner
    instance-id: stubrunner:${spring.application.instance-id:${random.value}}
    lease-renewal-interval-in-seconds: 5
    lease-expiration-duration-in-seconds: 10
    status-page-url-path: management/info
    health-check-url-path: management/health
ribbon:
  eureka:
    enabled: true
server:
  port: 8888
stubrunner:
  cloud:
    eureka:
      enabled: true
    stubbed:
      discovery:
        enabled: false
  idsToServiceIds:
    masterdata-stubs: masterdata
...