OpenFeign和Consul爱恨交织的两天

1. 背景

在公司对项目进行拆分,用consul做注册中心。既然弄注册中心了, 那就得远程调用,那就得整上OpenFeign进行远程调用,你说是不? 不能说就搞个RestTemplate+服务名调用吧?想法有了,说动就动,就对项目就行拆分,在拆分的过程中,就把我学到的拿出来和大家分享分享。(我也是第一次用consul,没啥经验)

2. 爱与恨

在信息远程接口调用时,一直抛出异常:Load balancer does not have available server for client:xxx, 调用一直无法成功,看了很多解决办法,都没啥用。不过看这类型的日志我们知道,就是服务获取失败。 这真是一个头疼的问题(这个问题搞了一天),TMD,疼都炸了。说一下解决方案。

在application.yml中加上以下配置
spring:
    cloud:
    loadbalancer:
        ribbon:
        enabled: false

这个问题的根本原因就是consul整个openFeign用ribbon调用获取不到服务问题。把服务关闭就好了。

在拆分过程中,一个服务有很多service接口拿出来调用。例如:A服务中有 service1,service2,B在用Feign调用A接口时,就想对每个Service都有一个代理。默认情况下,不允许有多个代理。 看了很多,发现了一种最简单的写法,如下:

/**
 * 通过contextId就可以区分
 *
 * @author fattyca1
 */
@FeignClient(name = "PRODUCER", contextId = "bye")
public interface ByeService {

    @RequestMapping("/bye")
    String sayBye(@RequestParam("bye") String bye);
}

/**
 * ceshi
 *
 * @author fattyca1
 */
@FeignClient(name = "PRODUCER", contextId = "hello")
public interface HelloService {

    @RequestMapping("/hello")
    String test(@RequestParam("hello") String hello);
}

在用consul进行服务注册, 服务会被覆盖, 这个时候就要设置不同的 InstantId和prefer-ip就好了

这还用想,当然是有学习到了啊,平时都是用的Eureka,突然换成consul,虽然原理是一样的,但是没想到还有不是很兼容的问题呀,学习到了一波。

当然,最终终于解决完问题,把服务拆好了,可以舒舒服服的修改代码了。

3. 总结

平时还得多用一些不一样的东西,然后接触不一样的问题,就可以不断扩展自己的知识圈,总结问题,学习方案。

Original: https://www.cnblogs.com/lifacheng/p/14008421.html
Author: 编号94530
Title: OpenFeign和Consul爱恨交织的两天

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/616240/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 鸿蒙(HarmonyOS)开发笔记四:项目结构

    这篇我们来了解一下harmonyOS的项目结构,包括目录结构及其作用,配置文件的基础配置信息 1. 项目整体结构 之前我们创建过一个项目,有一个文本展示和一个按钮,每点击一次数字加…

    Java 2023年6月16日
    098
  • 集合框架和泛型编程

    Java集合框架 一组存储对象的容器(动态) 常见的集合算法 遍历集合 添加集合元素 删除集合元素 查找集合元素 集合元素排序 Java SE提供了: Collection接口:存…

    Java 2023年6月6日
    0146
  • java集合框架

    转载:https://www.cnblogs.com/yangliguo/p/7476788.html 部分修改自其它博主,地址找不到了,望见谅! 集合 集合与数组 数组(可以存储…

    Java 2023年6月9日
    091
  • Spring 源码(12)Spring Bean 的创建过程(3)

    继续上一篇 Spring Bean的创建过程的解读,上一篇介绍了 Spring在创建过程中 doGetBean方法,在执行过程中会调用 getSingleton方法并且设置一个 l…

    Java 2023年6月14日
    072
  • SpringBoot版不需要配置文件注解获取当前登录用户

    本文讯(2019年3月30日 飞快的蜗牛博客) 我是一个懒人,很久不写博客,想起来看到也不一定会写,只有心血来潮的时候写写,”钱塘江上潮信来,今日方知我是我&#8221…

    Java 2023年6月16日
    096
  • 整理最近用的Mongo查询语句

    最近做了几个规则逻辑。用到mongo查询比较多,就是查询交易信息跑既定规则筛选出交易商户,使用聚合管道进行统计和取出简单处理后的数据,用SQL代替业务代码逻辑的判断。 MongoD…

    Java 2023年6月7日
    074
  • JPA 入门实战(2)–简单使用

    本文主要介绍 JPA 的实际使用,相关的环境及软件信息如下:JPA 2.2(eclipselink 2.7.10、hibernate-entitymanager 5.6.10.Fi…

    Java 2023年6月16日
    077
  • 二进制转换与位运算

    在应用程序常用的进制包含 二进制 八进制 &am…

    Java 2023年6月16日
    078
  • javaSE思维导图

    javaSE思维导图 javaSE思维导图 posted on2022-08-28 22:20 郑-某 阅读(4 ) 评论() 编辑 Original: https://www.c…

    Java 2023年6月13日
    090
  • MySQL 索引简介

    索引的含义和特点 索引有其明显的优势,也有不可避免的缺点: 创建和维护索引同样需要耗费时间,并随着数据量的增加而增加 索引也会占用一定的物理空间 增加、删除和修改数据时,要动态地维…

    Java 2023年6月8日
    076
  • [Java]《On Java》阅读记录之 — 可变参数重载问题

    有下面一段代码: public class OverloadingVarargs2 { static void f(float i , Character… args) { S…

    Java 2023年6月5日
    071
  • Spring源码学习笔记5——注册BeanPostProcessor,初始化事件多播器,注册事件监听器

    一丶前言 上篇Spring容器回调完所有的BeanFactoryPostPocessor,之后可以做到替换所有占位符,解析所有配置类等工作,这篇还会迎来一个Spring留给我们扩展…

    Java 2023年6月14日
    081
  • SpringBoot自动装配

    1、SpringBoot自动装配是什么? 关键文件: META-INF/spring.factories 启动器:spring-boot-starter-XXX 文件中的配置的类型…

    Java 2023年6月5日
    0103
  • 不关闭SELinux情况下使用ftp传输

    在做搭建ftp服务器的作业时,整了一个活,在不关闭SELinux的情况下测试ftp服务器 使用的环境,虚拟机*2 (CentOS 7),Hyper-v,网卡已设为静态 需要安装的软…

    Java 2023年6月7日
    076
  • SpringMVC 使用注解时路径找不到

    SpringMVC 注解路径找不到 今天在使用SpringMVC时偶然遇到了跳转 404 的问题,于是决定记录下来 启动后输入 @RequestMapping(“/lo…

    Java 2023年6月14日
    088
  • Effective Java 第三版—— 85. 其他替代方式优于Java本身序列化

    Tips书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code注意,书中的有些代码里方法是基于Java 9…

    Java 2023年5月29日
    092
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球