服务注册与发现
服务发现模块:Eureka
创建服务注册中心
pom依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
通过@EnableEurekaServer
注解启动一个服务注册中心提供给其他应用进行对话,只需要在一个普通的Spring Boot应用中添加这个注解就能开启此功能.
@EnableEurekaServer @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args); } }
在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties
中增加如下配置
#spring boot port server.port=1111 #禁用它的客户端注册行为 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false #注册中心地址 eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
创建服务提供方
pom依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
通过DiscoveryClient
对象,在日志中打印出服务实例的相关内容。
@RestController public class ComputeController { private final Logger logger = Logger.getLogger(getClass());
@Autowired private DiscoveryClient client;
@RequestMapping(value = "/add" ,method = RequestMethod.GET) public Integer add(@RequestParam Integer a, @RequestParam Integer b) { ServiceInstance instance = client.getLocalServiceInstance(); Integer r = a + b; logger.info("/add, host:" + instance.getHost() + ", service_id:" + instance.getServiceId() + ", result:" + r); return r; } }
主类中通过加上@EnableDiscoveryClient
注解,该注解能激活Eureka中的DiscoveryClient
实现,才能实现Controller中对服务信息的输出
@EnableDiscoveryClient @SpringBootApplication public class ComputeServiceApplication { public static void main(String[] args) { new SpringApplicationBuilder(ComputeServiceApplication.class).web(true).run(args); } }
application.properties 配置
#服务实例名 spring.application.name=compute-service #spring boot port server.port=2222 #注册中心地址,多个值以逗号隔开 eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
博客所有内容仅供自已学习和学习过程的记录,如有侵权,请联系我删除!!!