本文主要是介绍Feign接口方式实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Feign
Feign接口方式并没有成功,尝试了并没有成功
2020年10月16日再次尝试,成功,Success!
Feign的声明式的web service客户端,它让微服务之间调用更加简单,类似controller调用service,SpringCloud集成了Ribbon和Eureka,可在使用feign时提供负载均衡的http客户端
只要创建一个借口添加注解
Ribbon通过微服务名字访问
feign通过接口访问
版本问题
原因
版本问题,不同的版本导致使用的代码可能不同
重新选择springboot和springcloud的版本
这个版本中文网有翻译好的文档,到时找问题也方便
对应的是2.1.x的版本
所以最后选择2.1.17.release GA SpringBoot 和 Greenwich S6 版本的springcloud
创建项目时检查一下
<artifactId>spring-boot-starter-parent</artifactId><version>2.1.17.RELEASE</version><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR6</spring-cloud.version>
</properties>
实现
角色和环境
-
-
provider服务端口、eureka 注册中心、consumer消费者
-
dashboard后续可以进行监控
-
provider和consumer都需要连接eureka
-
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
-
-
consumer要通过feign的方式连接到provider需要openfeign
-
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
-
-
web是必须的
-
eureka作为注册中心
-
dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
主要流程:
provider
-
创建接口
-
-
public interface ProviderTest {String test(); }
-
-
实现业务
-
创建一个接口并实现业务
-
@RestController public class ProviderController {@AutowiredProviderTestImpl providerTest;@RequestMapping("/test")public String testMethod(){return providerTest.test();}@RequestMapping("/hystrix/{id}") // @HystrixCommand(fallbackMethod = "hystrixGet")public String hystrixTest(@PathVariable (value = "id") int id){if (id==0){throw new RuntimeException("hystrix test============");}return "hystrix++++++++++++++++++++"+id;}public String hystrixGet(@PathVariable("id") int id){return "hystrixGet====================="+id;}}
-
-
下面两段是实现hystrix用的暂时不写
-
启动类支持Eureka
-
@EnableEurekaClient
-
server.port=8001spring.application.name=provider-8001 #能直接代替applicationNameeureka.client.service-url.defaultZone:http://localhost:7001/eureka/eureka.instance.instance-id=8001
-
Eureka
-
设置端口,开启支持
-
@EnableEurekaServer
-
server.port=7001
consumer
-
需要一个一摸一样的接口,可以不一样,但是功能要一样,这个接口加上Fegin支持,并且添加上请求注解,需要与provider的请求一样,然后是provider在Eureka中的applicaitonName
-
@Component @FeignClient(value = "PROVIDER-8001") public interface FeignService {@RequestMapping("/test")String test(); }
-
使用Component交给spring托管,只要通过这个接口注入访问的就能通过Eureka访问到provider
-
编写consumer的请求
-
@RestController public class ConsumerController {@AutowiredFeignService feignService;@RequestMapping("/consumer/test")public String consumerTest(){return feignService.test();}}
-
启动类
-
@EnableEurekaClient @EnableFeignClients
-
设置端口连接Eureka
-
server.port=8080eureka.client.service-url.defaultZone:http://localhost:7001/eureka/spring.application.name=consumer-8080eureka.instance.instance-id=8080
测试
-
-
provide和consumer都就位
-
-
这篇关于Feign接口方式实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!