如何从零开始实现Spring Boot整合Feign进行跨服务调用的详细步骤?
- 内容介绍
- 文章标签
- 相关推荐
本文共计601个文字,预计阅读时间需要3分钟。
介绍+微服务架构的互联网世界,跨服务调用显得很平均,我们除了采用传统的http方式接口调用,有没有更为优雅方便的方法呢?答案是肯定的,Feign就提供了轻便的方式!如果您的服务都注重注解,那么Feign绝对适合您!
介绍
微服务横行的互联网世界, 跨服务调用显得很平凡, 我们除了采用传统的start.spring.io/actuator/info
查询!
<properties> <spring-cloud.version>Greenwich.SR2</spring-cloud.version> </properties> <dependencyManagement> <dependencies> <!--SpringCloud依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--openfeign跨服务调用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!--openfeign底层使用ApacheHttpClient调用--> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-127.0.0.1:8081/", fallbackFactory = ExampleControllerFeignClient.ExampleControllerFeignClientFallbackFactory.class) public interface ExampleControllerFeignClient { @GetMapping(value = "getInfoById") String getInfoById(@RequestParam(value = "id") Long Id); /** * 服务降级内部类 */ @Component class ExampleControllerFeignClientFallbackFactory implements FallbackFactory<ExampleControllerFeignClient> { private Logger logger = LoggerFactory.getLogger(ExampleControllerFeignClientFallbackFactory.class); @Override public ExampleControllerFeignClient create(Throwable cause) { return new ExampleControllerFeignClient() { @Override public String getInfoById(Long signingLogId) { logger.error("跨服务调用失败, 原因是:" + cause.getMessage()); return "失败, 原因是:" + cause.getMessage(); } }; } } }
关键代码就是
@FeignClient(name = "sb-alibaba-nacos", url = "127.0.0.1:8081/", fallbackFactory = ExampleControllerFeignClient.ExampleControllerFeignClientFallbackFactory.class)
- name 就是被调用方的服务名称 (
这里如果你没有配置服务注册中心的化,其实可以随便写) - url 就是被调用方的地址(
如果配置了服务注册中心, 可以不写!, 不过两个服务必须都注册!,这样才能找到!) - fallbackFactory 就是调用失败时指定的处理类
最后, 我们写个测试方法
package com.mrcoder.sbfeign.controller; import com.mrcoder.sbfeign.feign.ExampleControllerFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @CrossOrigin @RestController public class TestController { @Autowired private ExampleControllerFeignClient exampleControllerFeignClient; @RequestMapping(value = "getInfoById", method = RequestMethod.GET) public String test(@RequestParam(value = "id") Long Id) { return exampleControllerFeignClient.getInfoById(Id); } }
开启两个服务sb-alibaba-nacos, sb-feign
而后访问sb-feign的测试方法
localhost:9999/getInfoById?id=22
出现
sb-alibaba-nacos return :22
跨服务调用成功~
到此这篇关于从零开始学springboot整合feign跨服务调用的文章就介绍到这了,更多相关springboot整合feign跨服务调用内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!
本文共计601个文字,预计阅读时间需要3分钟。
介绍+微服务架构的互联网世界,跨服务调用显得很平均,我们除了采用传统的http方式接口调用,有没有更为优雅方便的方法呢?答案是肯定的,Feign就提供了轻便的方式!如果您的服务都注重注解,那么Feign绝对适合您!
介绍
微服务横行的互联网世界, 跨服务调用显得很平凡, 我们除了采用传统的start.spring.io/actuator/info
查询!
<properties> <spring-cloud.version>Greenwich.SR2</spring-cloud.version> </properties> <dependencyManagement> <dependencies> <!--SpringCloud依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!--openfeign跨服务调用--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!--openfeign底层使用ApacheHttpClient调用--> <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-127.0.0.1:8081/", fallbackFactory = ExampleControllerFeignClient.ExampleControllerFeignClientFallbackFactory.class) public interface ExampleControllerFeignClient { @GetMapping(value = "getInfoById") String getInfoById(@RequestParam(value = "id") Long Id); /** * 服务降级内部类 */ @Component class ExampleControllerFeignClientFallbackFactory implements FallbackFactory<ExampleControllerFeignClient> { private Logger logger = LoggerFactory.getLogger(ExampleControllerFeignClientFallbackFactory.class); @Override public ExampleControllerFeignClient create(Throwable cause) { return new ExampleControllerFeignClient() { @Override public String getInfoById(Long signingLogId) { logger.error("跨服务调用失败, 原因是:" + cause.getMessage()); return "失败, 原因是:" + cause.getMessage(); } }; } } }
关键代码就是
@FeignClient(name = "sb-alibaba-nacos", url = "127.0.0.1:8081/", fallbackFactory = ExampleControllerFeignClient.ExampleControllerFeignClientFallbackFactory.class)
- name 就是被调用方的服务名称 (
这里如果你没有配置服务注册中心的化,其实可以随便写) - url 就是被调用方的地址(
如果配置了服务注册中心, 可以不写!, 不过两个服务必须都注册!,这样才能找到!) - fallbackFactory 就是调用失败时指定的处理类
最后, 我们写个测试方法
package com.mrcoder.sbfeign.controller; import com.mrcoder.sbfeign.feign.ExampleControllerFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @CrossOrigin @RestController public class TestController { @Autowired private ExampleControllerFeignClient exampleControllerFeignClient; @RequestMapping(value = "getInfoById", method = RequestMethod.GET) public String test(@RequestParam(value = "id") Long Id) { return exampleControllerFeignClient.getInfoById(Id); } }
开启两个服务sb-alibaba-nacos, sb-feign
而后访问sb-feign的测试方法
localhost:9999/getInfoById?id=22
出现
sb-alibaba-nacos return :22
跨服务调用成功~
到此这篇关于从零开始学springboot整合feign跨服务调用的文章就介绍到这了,更多相关springboot整合feign跨服务调用内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

