一.Consul 注册中心安装
1.consul怎么在windows下安装
https://www.consul.io/downloads.html
根据自己系统选择版本
2.启动consul 注册中心
consul agent -dev
3.注册中心界面
二.Consul 服务注册和服务消费
1.服务注册
yml 配置
spring: cloud: consul: host: localhost port: 8500 discovery: service-name: consul-miya heartbeat: enabled: true application: name: consul-miya server: port: 8507 pom 文件: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
@SpringBootApplication @EnableDiscoveryClient //注册中心 @RestController public class SpringCloudConsulApplication { public static void main(String[] args) { ; new SpringApplicationBuilder(SpringCloudConsulApplication.class).run(args); } @RequestMapping("/hi") public String home(){ return "hi ,i'm miya"; } }
注册服务信息如下
2.服务消费
server: port: 8093 spring: application: name: consul-cloud-consumer cloud: consul: host: localhost port: 8500 discovery: register: false pom文件: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> </dependencies>
@FeignClient(value = "consul-miya") public interface IHiService { @RequestMapping(value = "/hi",method = RequestMethod.GET) String call(); } @RestController public class HiController { @Autowired private LoadBalancerClient loadBalancer; @Autowired private DiscoveryClient discoveryClient; @Autowired private RestTemplate restTemplate; @Autowired private IHiService hiService; /** * 获取所有服务 */ @RequestMapping("/services") public Object services() { return discoveryClient.getInstances("consul-miya"); } /** * 从所有服务中选择一个服务(轮询) */ @RequestMapping("/discover") public Object discover() { return loadBalancer.choose("consul-miya").getUri().toString(); } @RequestMapping("/call") public String call(){ ServiceInstance serviceInstance = loadBalancer.choose("consul-miya"); String call = new RestTemplate().getForObject(serviceInstance.getUri().toString()+"/hi",String.class); return call; } /*** * fegin 调用服务 * @return */ @RequestMapping("/callable") public String callable(){ return hiService.call(); } }
调用成功