Spring Cloud Sidecar配置问题

时间:2017-09-13 17:42:19

标签: java spring spring-cloud

我有一个非常简单的边车应用程序 - 只需要注释和主要方法,如下所示:

@SpringBootApplication
@EnableSidecar
public class SidecarApplication {
    ...
}

我也在后面有一个服务,位于同一个主机上,它有一个GET / joke端点。

边车配置:

server.port=5678
spring.application.name=joker

sidecar.port=8083
sidecar.home-page-uri=http://localhost:8083/
sidecar.health-uri=http://localhost:8083/health.json

management.security.enabled=false
logging.level.root=DEBUG

但是,在调用GET http://localhost:5678/joke时,我得到404.如果我调用GET http://localhost:8083/joke,我会得到有效的回复。

现在,如果我将其添加到边车配置中:

zuul.routes.joker.url=http://localhost:8083/

然后调用GET http://localhost:5678/joker/joke按预期工作。

我错过了什么,或者这是预期的行为?我原本期望边车不需要额外的配置来将所有传入的请求路由到包装的服务,并且我希望url用于访问sidecar后面的服务而不需要包含服务名称

2 个答案:

答案 0 :(得分:0)

我认为您需要在application.properties中添加更多类似的符号:

public void DoSomething(in Pair p) {
    p.x = 0; // illegal
    p = new Pair(0, 0); // also illegal
}

在应用程序中应具有以下3种表示法

spring.application.name = joke
server.port = 5678

eureka.client.serviceUrl.defaultZone = http: // localhost: 9000 / eureka
eureka.client.register-with-eureka = true
eureka.client.fetch-registry = true

sidecar.port = 8083
sidecar.health-uri = http: // localhost: 8083 / health

management.security.enabled = false

/ * example * /
zuul.routes.wstore.path = / wstore / **
zuul.routes.wstore.url = http: // localhost: 8083

请注意,此配置对于1.5.6.RELEASE的春季启动很有用

答案 1 :(得分:0)

如果您使用 Eureka,则路由是透明的。 sidecar 应用向 Eureka 注册自己,但将 Eureka homePageUrl 对象的 InstanceInfo 值设置为微服务的实际主机和端口。这就是您的客户将用于调用您的微服务的价值。