openfeign使用_Feign使用基于配置服务发现

5b9c6a78de1b850f0792e9ee9d765583.png

之前写了篇《Feign在实际项目中的应用实践总结》

Feign在实际项目中的应用实践总结 - 沐风之境 - 博客园​www.cnblogs.com

总结了在一般项目中如何使用Feign这个提升开发效率的利器。最近在看Feign的文档的时候发现了之前遗漏的一些点,所以写了这篇文章进行补充。

pom.xml

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

JavaConfig

@Slf4j
@Configuration
@EnableFeignClients
public class FeignConfig {@Resourceprivate SimpleDiscoveryProperties simpleDiscoveryProperties;// 在K8s环境中不需要服务注册中心可以自定义一个DiscoveClient的Bean,作为简单的一个服务列表@Beanpublic DiscoveryClient discoveryClient() {log.info(JSON.toJSONString(simpleDiscoveryProperties)); // 这里打印了加载的配置参数return new SimpleDiscoveryClient(simpleDiscoveryProperties);}
}

配置(在里面写服务的路由配置):

spring:cloud:loadbalancer:ribbon:enabled: falsediscovery:client:simple:instances:feign-attempt-client:- uri: http://localhost:8080

为什么要使用本地的服务列表?

服务部署在K8s环境中,可以使用k8s提供的DNS解析和负载均衡功能。所以不需要再引入一个服务注册中心组建导致复杂性的增加。

使用

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;@FeignClient(name = "feign-attempt-client")
public interface FeignServerClient {@GetMapping("/feign/server/hello-world/hello")String hello();
}

运行单元测试

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import static org.junit.jupiter.api.Assertions.*;@SpringBootTest
class FeignServiceClientTest {@Resourceprivate FeignServiceClient feignServiceClient;@Testvoid hello() {final String res = feignServiceClient.hello(); // HTTP请求返回字符串“Hi!”assertEquals(res, "Hi!");}
}

运行细节

加载的服务路由配置,可以看到instances的对象加载了我们定义的feign-attempt-client服务,它包含了一个服务实例。为什么只要定义个服务实例呢?因为我们服务是部署在K8s上的。k8s会帮我们做多实例的负载均衡的工作

{"instances": {"feign-attempt-client": [{"host": "localhost","metadata": {},"port": 8080,"secure": false,"serviceId": "feign-attempt-client","uri": "http://localhost:8080"}]},"local": {"host": "172.16.8.55","metadata": {},"port": 8080,"secure": false,"serviceId": "application","uri": "http://172.16.8.55:8080"},"order": 0
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle按用户进行统计信息更新

按用户进行统计信息更新 PL/sqldev工具使用system用户连接到oracle&#xff0c;打开命令窗口执行以下SQL&#xff0c;用户名请根据实际情况进行更改&#xff1a; begin dbms_stats.gather_schema_stats( ownname > testuser, estimate_percent > dbms_stats.aut…

个人使命宣言

最近在阅读《高效人士的7个习惯》&#xff0c;其中提到个人使命宣言&#xff0c;也就是个人的行为宪法&#xff0c;有了这个宪法我们在日常生活和工作中才能有法可循有法可依&#xff0c;才不至于在纷繁的社会中迷失自己。通过思考自我感觉制作个人使命宣言还是非常有用的&…

jq js json 转字符串_JS中JSON对象和String之间的互转及处理技巧

json&#xff1a;JavaScript 对象表示法(javascript Object Notation)&#xff0c;其实JSON就是一个javaScript的对象(Object)而已。如有不清楚JSON&#xff0c;可以去w3cschool了解http://www.w3school.com.cn/json/1.在Javascript中新建一个字符串(JSON文本)。 var txt { &q…

php中__autoload()方法详解

原文地址&#xff1a;http://www.php100.com/html/php/lei/2013/0905/5267.html[导读] PHP在魔术函数__autoload()方法出现以前&#xff0c;如果你要在一个程序文件中实例化100个对象&#xff0c;那么你必须用include或者require包含进来100个类文件&#xff0c;或者你把这100个…

python读取sql_从python读取sql的实例方法

从python读取sql的方法&#xff1a; 1、利用python内置的open函数读入sql文件&#xff1b; 2、利用第三方库pymysql中的connect函数连接mysql服务器&#xff1b; 3、利用第三方库pandas中的read_sql方法读取传入的sql文件即可。 python 直接读取 sql 文件&#xff0c;达到使用 …

我笨,但我不傻

2019独角兽企业重金招聘Python工程师标准>>> 威哥说&#xff1a;很多朋友给我留言&#xff0c;在学习的过程中如何坚持下去&#xff0c;关于努力和目标&#xff0c;我想谈谈自己的理解&#xff0c;有不同见解的地方&#xff0c;欢迎留言跟我探讨哈。 if(努力苦逼) r…

GNU make manual 翻译( 一百零四)

继续翻译 4.7 Rules without Recipes or Prerequisites If a rule has no prerequisites or recipe, and the target of the rule is a nonexistent file, then make imagines this target to have been updated whenever its rule is run. This implies that all targets dep…

mysql 数字 除以 一万_腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据...

腾讯股票接口&#xff1a;大单数据http://stock.finance.qq.com/sstock/list/view/dadan.php?tjs&csz002451&max80&p1&opt10&o0opt10 11 12 13 分别对应成交额大于等于(100万 200万 500万 1000万)opt1,2,3,4,5,6,7,8 分别对应成交量大于等于(100手 200手 …

asp.net url传值,弹窗

一,<a>标签链接式传值 1&#xff0c; <a href"News_list.aspx?ClassID<%#((DataRowView)Container.DataItem)["ClassID"]%>&Editor<%#((DataRowView)Container.DataItem)["Editor"]%>" >传值</a> 2, <a&g…

windows下python视频加速调节_Windows下python+ffmpeg实现批量提取、切割视频中的音频...

废话不说&#xff0c;直接上代码 #遍历所有mp4文件名->文件名改为字母形式->fffmpeg批量提取音频、切割音频->改回中文名 import os import subprocess current os.getcwd() dirs os.listdir(current) for i in dirs: if os.path.splitext(i)[1] ".mp4":…

(转)千万别熬夜:身体器官晚上工作时间表一览

原文连接&#xff1a;http://jiuyinguan.blog.163.com/blog/static/20907903720126801015713/ 任何试图更改生物钟的行为&#xff0c;都将给身体留下莫名其妙的疾病&#xff0c;20、30年之后再后悔&#xff0c;已经来不及了。 一、晚上9-11点为免疫系统&#xff08;淋巴&#x…

伯纳德•罗森伯格先生参加华为技术2016首届国际光电连接技术研讨会

近日&#xff0c;来自罗森伯格德国总部的CTO首席技术官伯纳德罗森伯格先生参加了由华为技术组织的2016首届国际光电连接技术研讨会。本届研讨会华为共邀请了来自全球的约十家著名光电技术领先厂家及合作伙伴参与&#xff0c;共同探讨未来数十年的光纤电子技术发展方向并分享最新…

如何使用python效率_Python的5中提高效率的用法

任何编程语言的高级特征通常都是通过大量的使用经验才发现的。比如你在编写一个复杂的项目&#xff0c;并在 stackoverflow 上寻找某个问题的答案。然后你突然发现了一个非常优雅的解决方案&#xff0c;它使用了你从不知道的 Python 功能&#xff01;这种学习方式太有趣了&…

记“debug alipay”一事

背景&#xff1a;客户支付成功&#xff0c;无法返回支付结果 查找原因&#xff0c;追踪代码: verified AlipayNotify.verify(params,alipayConfig.sign_type,alipayConfig.partner,alipayConfig.key,alipayConfig.input_charset); if (!verified) { Debug.logError("##…

Xamarin 跨移动端开发系列(01) -- 搭建环境、编译、调试、部署、运行

&#xff08;本文是基于老版本的VS和Xamarin&#xff0c;而VS2017已经集成了Xamarin&#xff0c;所以&#xff0c;本文已经过时&#xff0c;最新的Xamarin开发介绍请参见 使用 Xamarin开发手机聊天程序 。&#xff09; 如果是.NET开发人员&#xff0c;想学习手机应用开发&#…

内网穿透 无需公网ip_无需端口映射、无需公网IP,60秒实现FTP服务远程访问

互联网的一大特点是实现信息共享&#xff0c;其中文件传输是信息共享十分重要的内容之一。科技公司更是离不开它。销售、库存、客户资料等等数据需要随时共享同步。当需要考虑到文件传输安全、传输质量、传输稳定性、访问控制等诸多因素时&#xff0c;FTP服务器就成了解决文件传…

mysql查询的时候会涉及到锁_Mysql 查询 锁的问题?

以下五种方法可以快速定位全局锁的位置&#xff0c;仅供参考。方法1&#xff1a;利用 metadata_locks 视图此方法仅适用于 MySQL 5.7 以上版本&#xff0c;该版本 performance_schema 新增了 metadata_locks&#xff0c;如果上锁前启用了元数据锁的探针(默认是未启用的)&#x…

Clojure:导入lein项目到IntelliJ IDEA

首先&#xff0c;我们需要先创建一个lein项目&#xff08;废话。。&#xff09; lein new [项目名称] 然后生成Maven的pom.xml文件 cd [项目目录]lein pom 最后&#xff0c;在InteliJ IDEA中选择导入Maven项目&#xff0c;选择刚刚生成的pom.xml文件即可。 转载于:https://www.…

git 工具_Github开源工具分享之自托管GIT服务工具Gogs

介绍Gogs项目旨在构建一种简单&#xff0c;稳定和可扩展的自托管Git服务&#xff0c;该服务可以通过最轻松的方式进行设置。使用Go语言开发的git自托管服务&#xff0c;部署十分简单&#xff0c;可以在Go支持的所有平台(包括Linux&#xff0c;macOS&#xff0c;Windows和ARM)上…

Mariadb 二进制半自动安装脚本

Mariadb 二进制半自动安装脚本系统环境&#xff1a;centosx86_64Mariadb版本&#xff1a;mariadb-5.5.36-linux-x86_64#!/bin/bash#auth:code7#description:auto-mariadb#version:1.0groupadd -r -g 306 mysqluseradd -r -g 306 -u 306 mysql#创建mysql的组和用户tar -xvf mari…