先起一个服务端
启动springboot加入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
配置yml
eureka:
client:
#是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息
register-with-eureka: true
#是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,用false
fetch-registry: true
#设置服务注册中心的URL,用于client和server端交流
service-url:
defaultZone: http://localhost:8080/eureka/
instance:
hostname: localhost
#配置元数据 标记一下这台服务器有什么用 可用自己自定义
metadata-map.shit: caibi
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 3000
server:
port: 8080
#这个必写ip+端口+服务
spring:
application:
name: Eureka
加入启动标志
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
再启动一个provider
加入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置yml
eureka:
client:
#是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息
register-with-eureka: true
#是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,用false
fetch-registry: true
#设置服务注册中心的URL,用于client和server端交流
service-url:
defaultZone: http://localhost:8080/eureka/
server:
port: 8081
spring:
application:
name: Provider
提供服务
@RestController
public class MyController {
@GetMapping("/getHi")
public String getHi(){
return "hi";
}
}
启动springboot
写一个consumer调用服务
也是加入相同的依赖
配置yml
eureka:
client:
#是否将自己注册到Eureka Server,默认为true,由于当前就是server,故而设置成false,表明该服务不会向eureka注册自己的信息
register-with-eureka: true
#是否从eureka server获取注册信息,由于单节点,不需要同步其他节点数据,用false
fetch-registry: true
#设置服务注册中心的URL,用于client和server端交流
service-url:
defaultZone: http://eu1:8080/eureka/
server:
port: 8082
spring:
application:
name: Consumer
编写服务
用restTemplate去调用远程服务,我这变只是随便调用一个服务
@RestController
public class MyController {
@Autowired
EurekaClient client;
@GetMapping("/client")
public String get(){
List<InstanceInfo> provider = client.getInstancesByVipAddress("PROVIDER", false);
InstanceInfo info = provider.get(0);
String forObject=null;
// System.out.println(info);
if (info.getStatus()!= InstanceInfo.InstanceStatus.DOWN){
String url="http://"+info.getIPAddr()+":"+info.getPort()+"/getHi";
RestTemplate restTemplate = new RestTemplate();
forObject = restTemplate.getForObject(url, String.class);
}
return forObject;
}
}
结果
调用了8081的服务