• 首页

  • 归档

  • 标签

  • 分类

  • 友链
M S B l o g
M S B l o g

ms

获取中...

08
03
java
总结
问题
spring cloud

spring cloud中OpenFeign整合Sentinel启动报错

发表于 2021-08-03 • java 问题 spring cloud Feign Sentinel • 被 4,357 人看爆

错误:

FactoryBean threw exception on object creation; nested exception is java.lang.AbstractMethodError: 
com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidatateMetadata(Ljava/lang/Class;)Ljava/util/List;

原因:

Sentinel框架SentinelContractHolder类中找不到parseAndValidatateMetadata这个方法,是因为这个方法拼写有错误,在Sentinel和OpenFeign新版本中已经修正为parseAndValidateMetadata

image.png

Sentinel(2.2.1.RELEASE)中的SentinelContractHolder类调用的是新版本的OpenFeign(2.2.2.RELEASE)方法

而Spring Cloud Alibaba(2.2.1.RELEASE)引入的是旧版本的OpenFeign(2.2.1.RELEASE)方法

解决方法:

方法一,更换Spring cloud alibaba版本或Sentinel版本

方法二,覆盖SentinelContractHolder类,使其继续调用旧版parseAndValidatateMetadata方法

  • 在项目模块中新建包:com.alibaba.cloud.sentinel.feign
  • 添加SentinelContractHolder类
package com.alibaba.cloud.sentinel.feign;

import feign.Contract;
import feign.MethodMetadata;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SentinelContractHolder implements Contract {

    private final Contract delegate;

    /**
     * map key is constructed by ClassFullName + configKey. configKey is constructed by {@link
     * feign.Feign#configKey}
     */
    public final static Map<String, MethodMetadata> METADATA_MAP = new HashMap<>();

    public SentinelContractHolder(Contract delegate) {
        this.delegate = delegate;
    }


    @Override
    public List<MethodMetadata> parseAndValidateMetadata(Class<?> aClass) {
        List<MethodMetadata> metadatas = delegate.parseAndValidateMetadata(aClass);
        metadatas.forEach(metadata -> METADATA_MAP
                .put(aClass.getName() + metadata.configKey(), metadata));
        return metadatas;
    }
}
分享到:
@Autowired与@Resource的区别
防止重复提交,接口幂等性
  • 文章目录
  • 站点概览
ms

MSms

⚓️HelloWorld⚓️

QQ Email RSS
看爆 Top5
  • MyBatis-Plus分页查询 5,809次看爆
  • @Autowired与@Resource的区别 4,650次看爆
  • feign远程调用及异步调用丢失请求头问题 4,414次看爆
  • spring cloud中OpenFeign整合Sentinel启动报错 4,358次看爆
  • Certbot查看证书过期时间,手动续期以及自动续期 3,197次看爆

Copyright © 2025 ms · 湘ICP备20015239号

Proudly published with Halo · Theme by fyang · 站点地图