OpenFeign 使用细节

Cyrus Huang / 2024-07-15 / 原文

@FeignClient 注解配置项

public @interface FeignClient {
    
    // 和 value 互为别名,标示要调用哪个服务,要和 nacos 上面的服务名一致
    @AliasFor("name")
    String value() default "";

    // 当服务提供者的接口太多了,调用方想分为多个 FeignClient,就要指定不同的 contextId,一般不配置
    String contextId() default "";

    @AliasFor("value")
    String name() default "";

    String[] qualifiers() default {};

    // 表示要调用的地址,优先级高于 name,一般用于调试,写死一个地址(ip+端口)
    String url() default "";

    // 如果调用的接口 404,true:浏览器也响应 404;false:浏览器响应 500(看程序日志才会知道是 404)
    boolean dismiss404() default false;

    // Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract
    Class<?>[] configuration() default {};

    // 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口
    Class<?> fallback() default void.class;

    // 工厂类,用于生成 fallback 类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
    Class<?> fallbackFactory() default void.class;

    // 定义当前 FeignClient 访问接口时的统一前缀
    // 最终的全路径必须和服务提供方的 url 完全一致,如果这里加了 path,服务提供方没有这个,就会报 404
    String path() default "";

    boolean primary() default true;
}

超时配置

这个太复杂了,不同的场景配置不一样

feign、openfeign、httpclient、httpclient5、ok-http、ribbon、hystrix

连接超时、读取超时

只能看自己用的什么版本,什么组件

HttpClinet5