Sentinel整合Feign的时候,如果Feign是用继承模式实现的,会报NullPointerException
来源:8-16 Feign整合Sentinel
zengchen
2019-08-18
我的Feign是继承模式实现的,content里UserCenterFeignClient继承user里的UserCenterFeignClientService
- UserCenterFeignClient:
package com.zengchen.content.feignclient;
import com.zengchen.user.client.service.UserCenterFeignClientService;
import org.springframework.cloud.openfeign.FeignClient;
//@FeignClient(name = "user-center",configuration = UserCenterFeignClientConfiguration.class)
@FeignClient(name = "user-center")
public interface UserCenterFeignClient
extends UserCenterFeignClientService
{
/**
* FeignClient的name + GetMapping的value
* 相当于 http://user-center/reciteHis/testAno
* 和RestTemplate里写的url一模一样
* @return Page
*/
// @GetMapping(value = "/reciteHis/testAno")
// Page<ReciteHisOT> memberRctHisAno();
}
- user里的UserCenterFeignClientService:
package com.zengchen.user.client.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zengchen.user.common.ReciteHisOT;
import org.springframework.web.bind.annotation.GetMapping;
public interface UserCenterFeignClientService {
@GetMapping({"/reciteHis/testAno"})
Page<ReciteHisOT> memberRctHisAno();
}
- sentinel 配置
feign:
sentinel:
# 开启 sentinel 支持
enabled: true
测试情形 (实测)
- feign 为继承模式,不加 sentinel 开启的配置,可以正常使用 Feign 访问 user 服务
- feign 为继承模式,加上 sentinel 开启的配置,报 NullPointerException
- 把 Feign 改成非继承模式,加不加 sentinel 的配置,都可以正常访问
报错截图,methodMetadata是null,从map里获取的时候,那个key不一样:
还是非继承模式好啊!
写回答
1回答
-
您好,这是Spring Cloud Alibaba的Bug:https://github.com/alibaba/spring-cloud-alibaba/issues/626
这个bug已经修复了。版本> 0.9.0即可,可升级到2.1.0测试下问题是否存在哈。
162019-09-16
相似问题