SpringCloud集成consul
2020-12-13 03:31
标签:java server rop 示例 test code 文章 依赖 使用 1:新建一个项目: 一直下一步即可, porm.xml 添加依赖 springboot版本我使用的是2.0.5,不知为何使用2.1.6.无效 2:启动类添加了 @EnableDiscoveryClient 注解表示支持服务发现 3:配置文件application.properties(Consul 的地址和端口号默认是 localhost:8500 ,如果不是这个地址可以自行配置。 spring.cloud.consul.discovery.serviceName 是指注册到 Consul 的服务名称,后期客户端会根据这个名称来进行服务调用。) 4:新建一个 HelloController,提供 hello 的服务 为了模拟注册均衡负载复制一份上面的项目重命名为 spring-cloud-consul-producer2 ,修改对应的端口为 8507,修改 hello 方法的返回值为:”hello consul 2”,修改完成后依次启动两个项目。 Consul 消费端:spring-cloud-consul-consumer application.properties 启动类不需要@EnableDiscoveryClient 测试,创建一个 ServiceController ,试试如果去获取 Consul 中的服务。 运行services方法: 访问 http://localhost:8503/services 源码:https://gitee.com/Hiro-D/Java/tree/master/consul-demo 参考文章:https://blog.csdn.net/qq_26641781/article/details/82080659 SpringCloud集成consul 标签:java server rop 示例 test code 文章 依赖 使用 原文地址:https://www.cnblogs.com/a565810497/p/11078307.html
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulDemo2Application {
public static void main(String[] args) {
SpringApplication.run(ConsulDemo2Application.class, args);
}
}
spring.application.name=spring-cloud-consul-producer
server.port=8501
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
#注册到consul的服务名称
spring.cloud.consul.discovery.serviceName=service-producer
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello(){
return "hello,consul";
}
}
创建一个 spring-cloud-consul-consumer项目,pom 文件和上面示例保持一致。
配置文件(客户端可以设置注册到 Consul 中,也可以不注册到 Consul 注册中心中,根据我们的业务来选择,只需要在使用服务时通过 Consul 对外提供的接口获取服务信息即可。)spring.application.name=spring-cloud-consul-consumer
server.port=8503
spring.cloud.consul.host=127.0.0.1
spring.cloud.consul.port=8500
#设置不需要注册到 consul 中
spring.cloud.consul.discovery.register=false
@SpringBootApplication
public class ConsulConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsulConsumerApplication.class, args);
}
}
@RestController
public class ServiceController {
@Autowired
private LoadBalancerClient loadBalancerClient;
@Autowired
private DiscoveryClient discoveryClient;
/**
* 获取所有的服务
* */
@RequestMapping("/services")
public Object services(){
return discoveryClient.getInstances("service-producer");
}
/**
* 从所有服务中选择一个服务(轮询)
*/
@RequestMapping("/discover")
public Object discover() {
return loadBalancerClient.choose("service-producer").getUri().toString();
}
}