Я пытаюсь зарегистрировать свои заглушки для облачных контрактов в работающей службе обнаружения 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, а также?
Я также безуспешно прочитал следующие документы: