SpringCloud Eureka Provider及Consumer的实现

网友投稿 260 2022-12-25


SpringCloud Eureka Provider及Consumer的实现

Eureka-Provider 服务的提供者

新建一个服务提供者项目

1、导入pom文件

1.8

Greenwich.SR3

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-netflix-eureka-client

org.springframework.boot

spring-boot-starter-test

test

&FtNigVnIDYlt;dependency>

org.springframework.cloud

spring-cloud-dependencies

${spring-cloud.version}

pom

import

org.springframework.boot

spring-boot-maven-plugin

2、在启动类上加注解

@SpringBootApplication

@EnableDiscoveryClient // 这个注解加不加都可以,因为Eureka

publichttp:// class EurekaProviderApplication {

public static void main(String[] args) {

SpringApplication.run(EurekaProviderApplication.class, args);

}

}

上边那个@EnableDiscoverClient 注解加不加都行的原因会在后边表名

3、在Eureka-Provider项目中添加一个简单的接口

@RestController

public class EurekaProviderController {

@GetMapping("/provider")

public String provider(@RequestParam String aaa){

return "eureka-provider-return" + aaa;

}

}

4、以上配置完成之后启动Eureka-Provider

启动后会在控制台输出

DiscoveryClient_EUREKA-PROVIDER/192.168.1.4:eureka-provider:8000: registering service...

​同时看localhost:8761 页面的Instance currently registered 会多出一条信息

Application AMIs Availability Zones Status

EUREKA-PROVIDER n/a (1) (1) UP (1) - 192.168.1.4:eureka-provider:8000

Eureka-Consumer 服务的调用者

调用者的配置和上边提供者类似,applicatioin.yml配置修改server.port=8100

1、启动类修改

@SpringBootApplication // 另一个发现服务的注解可以不用谢(SpringCloud版本要在Edgware之后)

public class EurekaConsumerApplication {

@Bean

@LoadBalanced

RestTemplate restTemplate(){

return new RestTemplate();

}

public static void main(String[] args) {

SpringApplication.run(EurekaConsumerApplication.class, args);

}

}

2、编写一个调用接口的类

@RestController

public class EurekaConsumerController {

@Autowired

private RestTemplate restTemplate;

@GetMapping("/consumer")

@GetMapping("/consumer")

public String consumer(@RequestParam String aaa){

return restTemplate.getForObject("http://EUREKA-PROVIDER/provider?aaa=" + aaa,String.class );

}

}

3、启动服务调用者

​ 启动后,调用调用者的触发地址localhost:8100/consumer?aaa=consumerSemdParamter

​ 浏览器显示内容:

eureka-provider-returnconsumerSemdParamter

上边遗留的一个问题,eureka-client不加@EnableDiscoveryClient以将自己注册到注册中心

先看EurekaClientAutoConfiguration类中

@Configuration

@EnableConfigurationProperties

@ConditionalOnClass(EurekaClientConfig.class)

@Import(DiscoveryClientOptionalArgsConfiguration.class)

@ConditionalOnBean(EurekaDiscoveryClientConfiguration.Marker.class)

@ConditionalOnProperty(value = "eureka.client.enabled", matchIfMissing = true)

@ConditionalOnDiscoveryEnabled

@AutoConfigureBefore({ NoopDiscoveryClientAutoConfiguration.class,

CommonsClientAutoConfiguration.class, ServiceRegistryAutoConfiguration.class })

@AutoConfigureAfter(name = {

"org.springframework.cloud.autoconfigure.RefreshAutoConfiguration",

"org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration",

"org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration" })

public class EurekaClientAutoConfiguration {

}

可以看到该类加载的条件是需要有EurekaDiscoveryClientConfiguration.Maker.class的Bean存在,并且eureka.client.enabled为true,因为该值默认为true,所以不需要关注,因此重要的就是EurekaDiscoveryClientConfiguration.Maker.class这个,而这个类在Dalston之前的旧版本是不会自动加载的,而在Edgware之后,该类就配置到spring.factories文件中了,改文件中所配置的bean在springboot启动的时候就会被加载(所以不需要手动配上注册服务的注解了,springboot会自动配置)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Spring创建IOC容器的方式解析
下一篇:Java线程池运行状态监控实现解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~