4.Springcloud的Eureka的服务发现
项目地址:
服务发现:其实就是提供外部接口以访问服务的内容
步骤如下:
1.在eureka的provider客户端的controller里面加入一个client,同时加入一个接口,代码如下:
package com.debuggg.cloud.controller;
import com.debuggg.cloud.entities.Dept;
import com.debuggg.cloud.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class DeptController {
@Autowired
private DeptService deptService;
** @Autowired
private DiscoveryClient discoveryClient;**
@RequestMapping(value = "/dept/list",method = RequestMethod.GET)
public List<Dept> list(){
return deptService.list();
}
@RequestMapping(value = "/dept/get/{id}",method = RequestMethod.GET)
public Dept get(@PathVariable("id") Long id){
return deptService.get(id);
}
@RequestMapping(value = "/dept/add",method = RequestMethod.POST)
public Boolean add(@RequestBody Dept dept){
return deptService.add(dept);
}
** @RequestMapping(value = "/dept/discovery", method = RequestMethod.GET)
public Object discovery()
{
List<String> list = discoveryClient.getServices();
System.out.println("" + list);
List<ServiceInstance> srvList = discoveryClient.getInstances("MICROSERVICECLOUD-DEPT");
for (ServiceInstance element : srvList) {
System.out.println(element.getServiceId() + "\t" + element.getHost() + "\t" + element.getPort() + "\t"
+ element.getUri());
}
return this.discoveryClient;
}**
}
2.在eureka的provider客户端的启动类加入注解@EnableDiscoveryClient
如下:
package com.debuggg.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
public class DeptProvider8001_App {
public static void main(String[] args) {
SpringApplication.run(DeptProvider8001_App.class,args);
}
}
3.在eureka的consumer消费者客户端的controller加入访问接口
如下所示
//测试@EnableDiscoveryClient,消费端可以调用服务发现
@RequestMapping(value="/consumer/dept/discovery")
public Object discovery()
{
return restTemplate.getForObject(PREFIX+"/dept/discovery", Object.class);
}
启动eureka-server端,eureka-provider端,eureka-consumer端,可以测试eureka的服务发现,
正文到此结束