Spring 4 个应用程序注册为 Eureka 的客户端

Spring 4 application register as client to Eureka

我有一个 Spring 4 应用程序(不是 Spring Boot),我希望它注册到 Eureka 服务发现。

有什么办法吗? 因为所有的教程都紧扣Spring Boot.

这个问题以前在这里问过,基本上你需要做这样的事情,

 DiscoveryManager.getInstance().initComponent(new MyDataCenterInstanceConfig(), new DefaultEurekaClientConfig());

  String vipAddress = "MY-SERVICE";

    InstanceInfo nextServerInfo = null;
    try {
        nextServerInfo = DiscoveryManager.getInstance()
                .getEurekaClient()
                .getNextServerFromEureka(vipAddress, false);
    } catch (Exception e) {
        System.err.println("Cannot get an instance of example service to talk to from eureka");
        System.exit(-1);
    }

    System.out.println("Found an instance of example service to talk to from eureka: "
            + nextServerInfo.getVIPAddress() + ":" + nextServerInfo.getPort());

    System.out.println("healthCheckUrl: " + nextServerInfo.getHealthCheckUrl());
    System.out.println("override: " + nextServerInfo.getOverriddenStatus());

    System.out.println("Server Host Name "+ nextServerInfo.getHostName() + " at port " + nextServerInfo.getPort() );

您必须将配置文件添加到 class 路径。 Eureka 客户端使用此文件读取有关 eureka 服务器的信息。

eureka.preferSameZone=true
eureka.shouldUseDns=false
eureka.serviceUrl.default=http://localhost:8761/eureka/
eureka.decoderName=JacksonJson

下面是您需要的 Maven 依赖项。 Eureka1 支持 JDK7,尽管它的一部分是用 JDK8 构建的。但是我必须提供旧版本的 "archaius-core" 和 "servo-core" 才能使它成为 运行 和 JDK7

<dependency>
        <groupId>com.netflix.archaius</groupId>
        <artifactId>archaius-core</artifactId>
        <version>0.7.3</version>
    </dependency>
    <dependency>
        <groupId>com.netflix.servo</groupId>
        <artifactId>servo-core</artifactId>
        <version>0.10.0</version>
    </dependency>

这是 Netflix 自己的 Eureka 文档的 link 以及讨论该主题的原始 Stack Overflow 线程的 link 尤里卡:https://github.com/Netflix/eureka/wiki 原帖:

我做了什么:

在 "webapp" 模块中,我创建了一个 class 实现了 InitalizingBean,并重写了方法。在 post 构造方法中,我刚刚向 Eureka 发送了 POST 请求,并将我的应用程序注册为服务。

我的应用程序现已在 Eureka 中注册为微服务

我在使用 spring mvc 4 和 eureka 注册服务时遇到了同样的困难,但是使用 spring 的 SIDECAR 我可以解决它并且能够添加其他组件,例如 Ribbon,所以你必须创建一个 spring-boot 项目来添加 sidecar 的依赖,然后到 spring mvc 项目,在部署时修改端口,这样它就离开了(例如:localhost: 9090 / service1)你必须有一个 "health" 的服务,这个名称 returns "status: UP" (localhost: 9090 / health),我在这个项目中找到了所有这些配置,我被引导 (https://github.com/BarathArivazhagan/spring-cloud-sidecar-sample) 此外,sidecar 独立于服务的语言,只需要服务 "Health" 就可以在 eureka.Therefore 中注册它,你有一个 sidecar 可以使用 spring mvc 监听项目, eureka escuha 到 sidecar.In 我的存储库 有一个组件如何交互的完整描述。