服务提供者

服务提供者,是位于其他项目里面的。

服务提供者提供的方法,在Controller层里面,有可访问的Url。

@Controller
@RequestMapping("/order")
public class OrderDetailController { @ResponseBody
@RequestMapping(value="/detail/cdkey",method=RequestMethod.POST)
public OrderDetail getOrderDetailByCdkey(@RequestParam("cdkey") String cdkey){
//其他逻辑忽略
} }

服务消费者Feign

@FeignClient里面的value为服务提供者的服务名,fallback为服务熔断的class。

@RequestMapping的value属性为服务提供者的Url。

@FeignClient(value = "base",fallback = OrderDetailHystrix.class)
public interface OrderDetailService { @RequestMapping(value="order/detail/cdkey",method=RequestMethod.POST)
JSONObject getOrderDetailByCdkey(@RequestParam("cdkey") String cdkey);
}

除了使用如上的@RequestParam,还可以使用@RequestBody传递对象,比如

   @RequestMapping(value="order/detail/cdkey",method=RequestMethod.POST)
JSONObject getOrderDetailByCdkey(@RequestBody User user);

如果需要使用占位符,也可以用@PathVariable,示例如下:

 @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
Result get(@PathVariable("id") Integer id);

注意,最好让方法参数注解和服务提供者的方法参数注解保持一致。

服务熔断

出现异常,可以通过熔断保护服务。

熔断器要实现Feign接口。还要加上注解@Component。

@Component
public class OrderDetailHystrix implements OrderDetailService { @Override
public JSONObject getOrderDetailByCdkey(String cdkey) {
JSONObject resultJson = new JSONObject();
resultJson.put("errcode",AUTH_ORDER_SERVICE_ERROR.getCode() );
resultJson.put("description", AUTH_ORDER_SERVICE_ERROR.getMsg() );
return resultJson;
} }

使用Feign服务接口

可以在其他类(Service或Controller都可以)中注入已经声明的Feign接口,并调用其中的方法。

注入方式如下所示:

	@Autowired
private OrderDetailService OrderDetailService;

使用服务中的方法:

	//调用订单详情服务,获取订单日期
JSONObject jsonObject=orcmOrderDetailService.getOrderDetailByCdkey(cdkey);

如果在使用Feign进行服务消费时出错,可以参考以下内容进行排错:

微服务SpringCloud无法进行服务消费

Spring Cloud Feign踩坑记录(二)

SpringCloud Feign 常用代码的更多相关文章

  1. SpringCloud+Feign环境下文件上传与form-data同时存在的解决办法(2)

    书接上文. 上文中描述了如何在 SpringCloud+Feign环境下上传文件与form-data同时存在的解决办法,实践证明基本可行,但却会引入其他问题. 主要导致的后果是: 1. 无法与普通Fe ...

  2. SpringCloud Feign 之 Fallback初体验

    SpringCloud Feign 之 Fallback初体验 在微服务框架SpringCloud中,Feign是其中非常重要且常用的组件.Feign是声明式,模板化的HTTP客户端,可以帮助我们更方 ...

  3. SpringCloud Feign通过FallbackFactory显示异常信息

    SpringCloud Feign可以进行服务消费,而且内置了Hystrix,能够进行熔断. Feign可以通过fallback指定熔断回调的类.代码示例及讲解可见: https://www.cnbl ...

  4. GCD 常用代码

    GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...

  5. 转--Android实用的代码片段 常用代码总结

    这篇文章主要介绍了Android实用的代码片段 常用代码总结,需要的朋友可以参考下     1:查看是否有存储卡插入 复制代码 代码如下: String status=Environment.getE ...

  6. 刀哥多线程之03GCD 常用代码

    GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...

  7. jquery常用代码集锦

    1. 如何修改jquery默认编码(例如默认GB2312改成 UTF-8 ) 1 2 3 4 5 $.ajaxSetup({     ajaxSettings : {         contentT ...

  8. Mysql:常用代码

    C/S: Client Server B/S: Brower Server Php主要实现B/S .net IIS Jave TomCat LAMP:L Mysql:常用代码 Create table ...

  9. javascript常用代码大全

    http://caibaojian.com/288.html    原文链接 jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_ca ...

随机推荐

  1. echarts统计x轴区间的数值

    有时我们需要统计自定义echarts图,统计x轴区间的y轴数量. 思路是利用echarts的自定义配置:option.series[i].type='custom'中的renderItem(param ...

  2. php正则表达式中preg_match_all函数的详解

    php正则表达式中的函数我们之前为大家结果一个preg_match函数,相信大伙对此有所了解,那么php正则表达式中preg_match_all函数的具体使用是如何的呢?今天我们就带大家了解php正则 ...

  3. 宝石JUELRYE单词JUELRYE珠宝

    juelrye n.珠宝 late 14c., juelrye "precious ornaments, jewel juelrye (uncountable) Adornment with ...

  4. nginx服务的基本配置

    Nginx在运行时,至少必须加载几个核心模块和一个事件类模块.这些模块运行时所支持的配置项称为基本配置.由于配置项较多,所以把它们按照用户使用时的预期功能分为四类: 用于调试.定位问题的配置项 正常运 ...

  5. jsonpath 一个简单实用的工具

    import jsonpath import json data = "{\"a\": \"11\", \"c\": {\&quo ...

  6. oracle instantclient_12_2安装

    下载地址 http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index ...

  7. [SDIO].SDIO总线详解

    转自:https://blog.csdn.net/liuhan33025/article/details/51131848 SDIO接口是在SD内存卡接口的基础上发展起来的接口,SDIO接口兼容以前的 ...

  8. memcached——学习

    文章:memcached 常用命令及使用说明 远程清除memcached缓存 使用命令行: telnet 127.0.0.1 11211 连上memcached 然后使用命令:flush_all   ...

  9. Unity点击播放卡死问题的解决

    Unity项目使用了github for unity 插件,用来管理项目,结果安装完后Unity卡死在播放的界面,任务管理器中显示无响应. 经过排查后发现是 git for windows这个程序引起 ...

  10. 【python】Requests的三种参数请求方式

    URL参数请求: import requests ''' URL Parameters 请求方式: URL参数 例如: 以get 方式请求http://httpbin.org/get?first_na ...