请参考:https://blog.csdn.net/MadLifeBin/article/details/120332483
可搭建单机版用于 Demo 测试
<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-netflix-eureka-client</artifactId>
</dependency>
这里暂时不需要数据库
@EnableEurekaClient
@EnableDiscoveryClient
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class HttpFeignProvider8083 {
public static void main(String[] args) {
SpringApplication.run(HttpFeignProvider8083.class, args);
}
}
这里很简单的两个URLMapping,简单模拟两个场景:
@RestController
public class HttpFeignProviderController {
@GetMapping("/user/getUserNameById")
public String getUserNameById(@RequestParam("userId") String userId){
return "张学友";
}
@GetMapping("/product/getProductNameById")
public String getProductNameById(@RequestParam("productId") String productId){
return "iphone 13";
}
}
server.port=8083
spring.application.name=http-feign-provider8083
eureka.client.serviceUrl.defaultZone=http://host80:8080/eureka/,http://host81:8081/eureka/,http://host82:8082/eureka/
eureka.client.serviceUrl.healthcheck=true
# 若不配置该项,使用 spring.application.name 显示
#eureka.instance.instance-id=http-feign-provider8083
# actuator info 配置
info.app.name=${spring.application.name}
info.company.name=pengld
这里增加了一个依赖:spring-cloud-starter-netflix-ribbon,用于服务调用时负载均衡,为必须依赖项。
<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-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
</dependencies>
同样暂时不需要数据库,比服务提供者多一个注解:@EnableFeignClients
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class HttpFeignConsumer8084 {
public static void main(String[] args) {
SpringApplication.run(HttpFeignConsumer8084.class, args);
}
}
对比到前文服务提供者的controller,这里模拟两个场景,实际开发中根据功能、模块等维度划分不同的client用于区分。
@FeignClient(name="http://http-feign-provider8083",contextId = "UserClient",path = "/user")
public interface UserClient {
@GetMapping("/getUserNameById")
String getUserNameById(@RequestParam("userId") String userId);
}
@FeignClient(name="http://http-feign-provider8083",contextId = "ProductClient",path = "/product")
public interface ProductClient {
@GetMapping("/getProductNameById")
String getProductNameById(@RequestParam("productId") String productId);
}
@RestController
public class ConsumerController {
@Autowired
UserClient userClient;
@Autowired
ProductClient productClient;
@GetMapping("/getUserNameById")
public String getUserNameById(@RequestParam("userId") String userId){
return userClient.getUserNameById(userId);
}
@GetMapping("/getProductNameById")
public String getProductNameById(@RequestParam("productId") String productId){
return productClient.getProductNameById(productId);
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/MadLifeBin/article/details/120420139
内容来源于网络,如有侵权,请联系作者删除!