如何使用nodejs的spring cloud?

时间:2015-06-08 05:18:07

标签: node.js spring-cloud service-discovery

我现在正在考虑如何将spring cloud与nodejs结合起来。 所以我想使用nodeJS作为中间层,它为前端angularjs应用程序提供api,但是一旦nodeJS获得api请求,它将触发其他http请求后端spring api。 我注意到spring cloud提供了很多非常好的功能,比如服务发现,配置服务器,但这些都用于spring本身。假设我如何在nodeJS中加载配置服务器结果,如果可以通过json解析轻松完成,我如何使用NodeJS的服务发现? 在春季项目中,我可以使用:

InstanceInfo instance = discoveryClient.getNextServerFromEureka("spirent", false);
String url = instance.getHomePageUrl();

但如果我使用nodeJS,nodeJS如何从eureka服务中轻松找到下一个服务实例?

希望听取您的意见和建议。

基于这个建议,我添加了

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-netflix-sidecar</artifactId>
        <version>1.0.2.RELEASE</version>
    </dependency>

到我当前的Eureka服务器POM,然后我在mainApplication中有这个:

@SpringBootApplication
@EnableEurekaServer
@EnableSidecar

public class SpringCloudEurekaServerApplication {

    public static void main(String[] args) throws IOException {
        System.err.println(new ClassPathResource("static/eureka/css/wro.css").getURL());
        SpringApplication.run(SpringCloudEurekaServerApplication.class, args);
    }
}

Eureka服务器上的Application.yml和bootstrap.yml与以前相同。

    server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    waitTimeInMsWhenSyncEmpty: 0

和bootstrap.yml:

spring:
  application:
    name: eureka
  cloud:
    config:
      uri: ${CONFIG_SERVER_URL:http://localhost:8888}

现在,Eureka客户仍然可以注册此Eureka服务器,但是当我访问:http://localhost:8761/hosts/mysevice时,我的回复是空的。

所以我的问题是:sideCar可以自动找出在Eureka服务器上注册的所有服务吗?

1 个答案:

答案 0 :(得分:3)

Spring Cloud Netflix Sidecar是这样做的方法。文件are here。你可以做以下两件事之一:

  1. 您可以使用启用了sidecar的自动zuul代理。您可以向http://localhost:<sidecarport>/<servicename>
  2. 发出请求
  3. 您可以通过请求http://localhost:<sidecarport>/hosts/<servicename>
  4. 获取服务的可用主机列表