Sentinel整合Feign的时候,如果Feign是用继承模式实现的,会报NullPointerException

来源:8-16 Feign整合Sentinel

zengchen

2019-08-18

我的Feign是继承模式实现的,contentUserCenterFeignClient继承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回答

大目

2019-08-18

您好,这是Spring Cloud Alibaba的Bug:https://github.com/alibaba/spring-cloud-alibaba/issues/626

这个bug已经修复了。版本> 0.9.0即可,可升级到2.1.0测试下问题是否存在哈。

1
6
大目
回复
慕的地8180208
会的哈,不仅会有笔记,最近会录制第十九章,手把手教大家升级spring close alibaba。 敬请期待!
2019-09-16
共6条回复

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

3054 学习 · 1322 问题

查看课程