我们计划使用Spring Cloud Netflix oss组件。所以我做了一个小样本项目。 我开发了2个弹簧微服务,这些服务运行良好 http://localhost:9000/microsvc-one http://localhost:9001/microsvc-two
并且还编写了一个样本spring cloud etflix eureka maven项目,该项目运行良好 http://localhost:8761
我在spring boot微服务主类上使用@EurekaDiscoveryClient和@SpringBootApplication注释
我使用了注释@EnableEurekaServer和@SpringBootApplication
现在我在eureka服务器中注册这些服务时遇到了问题。我提到了一些样本。我不理解那些。 我对microsvc-one和microsvc-two的application.yml文件以及eureka服务器的application.yml文件进行了一些更改。 但它仍显示为空。
需要或缺少所有更改或正确配置,以便我的服务在eureka上注册。
我还有其他问题,比如我需要创建一个单独的项目,其中包含@EnableConfigServer和@SpringBootApplication Annotations,而不是上述2个微服务和eureka服务器项目模块,以便在eureka上注册服务。 我在大多数例子中都看到了这些。
如果是的话。我们如何在所有这些之间建立联系?
答案 0 :(得分:5)
如果您正在使用springBoot应用程序,则需要注释@SpringBootApplication,这就是为什么注释会出现在您正在看到的项目上的原因。 @EnableConfigServer就是当你使用spring-cloud配置服务器时,它用于外化配置属性,但是因为你在项目中有application.yml所以你也不需要它。
我想你有微服务器和Eureka服务器的spring boot应用程序。您需要使用
注释eureka主类@SpringBootApplication
@EnableEurekaServer
@EnableDiscoveryClient
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
此外,您需要使用..
为微服务的主类注释@SpringBootApplication
@EnableDiscoveryClient
public class MicroApplication {
public static void main(String[] args) {
SpringApplication.run(MicroApplication.class, args);
}
}
既然你没有在这里提出application.yml文件就是你需要的。
您需要在微服务的application.yml中进行以下配置。
eureka:
client:
serviceUrl:
defaultZone: ${eurekaurl:http://localhost:8761/eureka/}
在Eureka Server application.yml文件中,我有这个。你可能需要根据你的需要进行调整。
info:
component: Registry Server
server:
port: ${port:8761}
eureka:
client:
registerWithEureka: false
fetchRegistry: false
server:
enable-self-preservation: false
waitTimeInMsWhenSyncEmpty: 0
instance:
hostname: localhost
lease-expiration-duration-in-seconds: 15
lease-renewal-interval-in-seconds: 5
答案 1 :(得分:1)
假设您现在有一个名为“LoginServer”的微服务,让我们看看如何在启动时向发现服务器(Eureka Server)注册此服务。
这里是LoginServer.java的Spring Boot启动类:
@EnableAutoConfiguration
@EnableDiscoveryClient
public class LoginServer {
public static void main(String[] args) {
// Will configure using login-server.yml
System.setProperty("spring.config.name", "login-server");
SpringApplication.run(LoginServer.class, args);
}
}
@EnableDiscoveryClient - 启用服务注册和发现。在这种情况下,此进程使用其在YML配置文件中配置的应用程序名称向Discovery-server服务注册自身。
让我们看一下完整的设置:
首先创建一个login-server.yml(任何名称但扩展名应为.yml)文件到src / main / resources包文件夹中。并编写这些配置并保存。
# Spring properties
spring:
application:
name: login-server # This name used as ID so ("spring.config.name",
#"login-server"); must be same.
# Discovery Server Access
eureka:
client:
serviceUrl:
defaultZone: http://localhost:1111/eureka/
# HTTP Server
server:
port: 2222 # HTTP (Tomcat) port
运行LoginServer并让它完成初始化。将此网址http://localhost:1111放在您喜欢的浏览器中并刷新,打开仪表板。几秒钟后,您应该看到LOGIN-SERVER。通常,注册最多需要30秒(默认情况下),因此请等待或重新启动。
这是微服务完整注册过程。