【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中)

这篇具有很好参考价值的文章主要介绍了【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 你可以使用 Jersey 和 CXF 这些来写一个 Rest 或 SOAP 服务的java客服端。

  • 你也可以直接使用 Apache HttpClient 来实现。但是 Feign 的目的是尽量的减少资源和代码来实现和 HTTP API 的连接

  • *通过自定义的编码解码器以及错误处理,你可以编写任何基于文本的 HTTP API。

  • Feign通过注解注入一个模板化请求进行工作。只需在发送之前关闭它,参数就可以被直接的运用到模板中。

  • *然而这也限制了Feign,只支持文本形式的API,它在响应请求等方面极大的简化了系统。

interface UserService {

	 List getUserList( String userName,  int age);
}

static class User {
 String userName;
 int age;
}

public static void main(String... args) {
 User user = Feign.builder()
            .decoder(new GsonDecoder())
            .target(UserService.class, "https://api.github.com");

 List userList = github.getUserList("libo", 12);
 for (User user : userList) {
   System.out.println(user.userName + " (" + user.age + ")");
 }
}
复制代码

Feign 有许多可以自定义的方面。举个简单的例子,你可以使用 Feign.builder() 来构造一个拥有你自己组件的API接口,如下:

interface Bank {

 Account getAccountInfo( String id);
}
复制代码

// AccountDecoder() 是自己实现的一个Decoder

Bank bank = Feign.builder().decoder(new AccountDecoder()).target(Bank.class, https:
复制代码

举个例子,下面的这个模式允许使用当前url和身份验证token来装饰每个发往身份验证中心服务的请求。

CloudDNS cloudDNS = Feign.builder().target(new CloudIdentityTarget(user, apiKey));

Feign 包含了 GitHub 和 Wikipedia 客户端的实现样例.相似的项目也同样在实践中运用了Feign。尤其是它的示例后台程序。

Feign 可以和其他的开源工具集成工作。你可以将这些开源工具集成到 Feign 中来。目前已经有的一些模块如下:

  • *Gson包含了一个编码器和一个解码器,这个可以被用于JSON格式的API。

添加 GsonEncoder 以及 GsonDecoder到你的 Feign.Builder 中, 如下:

GsonCodec codec = new GsonCodec();
GitHub github = Feign.builder()
           .encoder(new GsonEncoder())
           .decoder(new GsonDecoder())
           .target(GitHub.class, https:
复制代码

<dependency>
  <groupId>com.netflix.feigngroupId>
  <artifactId>feign-gsonartifactId>
  <version>8.18.0version>
dependency>
复制代码
  • *Jackson包含了一个编码器和一个解码器,这个可以被用于JSON格式的API。

添加 JacksonEncoder以及 JacksonDecoder到你的Feign.Builder 中, 如下:

UserService service = Feign.builder()
           .encoder(new JacksonEncoder())
           .decoder(new JacksonDecoder())
           .target(UserService.class, https:
复制代码

<dependency>
  <groupId>com.netflix.feigngroupId>
  <artifactId>feign-jacksonartifactId>
  <version>8.18.0version>
dependency>
复制代码
  • SaxDecoder 用于解析XML,并兼容普通JVM和Android。下面是一个配置SAX来解析响应的例子:
api = Feign.builder().decoder(SAXDecoder.builder()
.registerContentHandler(UserIdHandler.class)
.build())
.target(Api.class, https:
复制代码
<dependency>
  <groupId>com.netflix.feigngroupId>
  <artifactId>feign-saxartifactId>
  <version>8.18.0version>
dependency>
复制代码
  • JAXB包含了一个编码器和一个解码器,这个可以被用于XML格式的API。

添加 JAXBEncoder 以及 JAXBDecoder 到你的 Feign.Builder 中, 如下:

api = Feign.builder()
      .encoder(new JAXBEncoder())
      .decoder(new JAXBDecoder())
      .target(Api.class, https:
复制代码

<dependency>
  <groupId>com.netflix.feigngroupId>
  <artifactId>feign-jaxbartifactId>
  <version>8.18.0version>
dependency>
复制代码

JAXRSContract 使用 JAX-RS规范重写覆盖了默认的注解处理。

下面是一个使用 JAX-RS 的例子:

interface GitHub {

 List contributors( String owner,  String repo);
}

GitHub github = Feign.builder()
           .contract(new JAXRSContract())
           .target(GitHub.class, https:
复制代码

<dependency>
  <groupId>com.netflix.feigngroupId>
  <artifactId>feign-jaxrsartifactId>
  <version>8.18.0version>
dependency>
复制代码

OkHttpClient使用OkHttp来发送Feign的请求,OkHttp支持SPDY (SPDY是Google开发的基于TCP的传输层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验),并有更好的控制http请求。

要让 Feign 使用 OkHttp ,你需要将 OkHttp 加入到你的环境变量中区,然后配置 Feign 使用 OkHttpClient,如下:

GitHub github = Feign.builder()
           .client(new OkHttpClient())
           .target(GitHub.class, "https://api.github.com");
复制代码

分享资源

【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中),分布式&amp;微服务技术体系,rpc,网络协议,网络
获取以上资源请访问开源项目 点击跳转文章来源地址https://www.toymoban.com/news/detail-634839.html

到了这里,关于【Fegin技术专题】「原生态」打开Fegin之RPC技术的开端,你会使用原生态的Fegin吗?(中)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 构建数字化金融生态系统:云原生的创新方法

    内容来自演讲:曾祥龙 | DaoCloud | 解决方案架构师 摘要 本文探讨了金融企业在实施云原生体系时面临的挑战,包括复杂性、安全、数据持久化、服务网格使用和高可用容灾架构等。针对网络管理复杂性,文章提出了Spiderpool开源项目,旨在优化传统网络方案,兼顾性能与自动

    2024年02月03日
    浏览(46)
  • 从传统云架构到云原生生态体系架构的演进

    随着科技的不断发展,云计算领域也经历了巨大的变革。这一演进的核心焦点是从传统云架构过渡到云原生生态体系架构,这个过程在过去的几年里已经发生了显著变化。本文将深入探讨这一演进过程,以及它对企业和技术生态系统的影响。 在云计算兴起之初,虚拟化技术是

    2024年02月08日
    浏览(40)
  • 百度智能云发布国内首个AI原生应用商店,构建全链路大模型生态体系

    面向企业客户启动文心大模型4.0 API调用服务测试申请, 服务超过17000家客户,在各行各业的近500个场景中进行大模型应用落地探索 ……自今年3月面世以来,百度智能云千帆大模型平台作为全球首个一站式企业级大模型平台,为业界交出了唯一一份“满分成绩单”。 10月17日

    2024年02月07日
    浏览(51)
  • 以大模型重构云计算,百度智能云为繁荣AI原生应用生态操碎了心

    临近2024年关,也到了2023年的总结时刻。 如果要问AI领域,2023年最不缺的是什么?“大模型”当仁不让。 那AI领域,2023年最缺的又是什么?一个答案可能是“卡”,但“卡”的问题,毕竟已有多种解决办法或者替代方案;另一个答案便是“应用”了,特别是基于大模型的AI原

    2024年02月04日
    浏览(52)
  • 探索容器化世界:开源容器生态系统概览 | 开源专题 No.61

    Stars: 15.7k License: Apache-2.0 ingress-nginx 是一个使用 NGINX 作为反向代理和负载均衡器的 Kubernetes Ingress 控制器。该项目具有以下核心优势: 使用 NGINX 作为反向代理和负载均衡器 支持多个版本,包括 1.9.1、1.8.2 等 提供详细的变更日志以及支持文档 Stars: 66.8k License: Apache-2.0 Moby 是一

    2024年01月20日
    浏览(55)
  • 集群部署专题之二:超高性能RPC框架Zeroc-ICE集群部署简易教程

    Zeroc ICE在简中互联网的资料十分匮乏,以至于大家线上使用时可能会有所顾虑。其实大家尽可放心,ZerocICE是一款性能和稳定性都非常优秀的RPC组件,这也是我当时选择ZerocICE作为XL-LightHouse的RPC组件的唯一原因。为便于大家快速了解ZerocICE,本文以v3.7版本为例介绍其部署和使

    2024年02月10日
    浏览(37)
  • 微信小程序生态4-扫普通二维码进入小程序、打开短链接进入小程序

    微信小程序生态1-初识小程序 微信小程序生态2-创建一个微信小程序 微信小程序生态3-微信小程序登录流程设计 微信小程序生态4-扫普通二维码进入小程序、打开短链接进入小程序 微信小程序生态5-微信公众号扫码登录PC端网页 微信小程序生态6-微信公众号授权登录(适用于H

    2024年02月02日
    浏览(56)
  • 【Dubbo3云原生微服务开发实战】「Dubbo前奏导学」 RPC服务的底层原理和实现

    Dubbo是一款高效而强大的RPC服务框架,它旨在解决微服务架构下的服务监控和通信问题。该框架提供了Java、Golang等多语言的SDK,使得使用者可以轻松构建和开发微服务。Dubbo具备远程地址发现和通信能力,可通过Dubbo独有的身临其境的服务治理特验为主导,以提高开发人员的功

    2024年02月05日
    浏览(49)
  • 大数据——技术生态体系

    随着大数据行业的发展,大数据生态圈中相关的技术也在一直迭代进步,希望能通过本文帮助大家快速构建大数据生态圈的完整知识体系。  Apache Hive是一个用于数据查询和分析的数据仓库工具。Hive构建在Hadoop之上,并提供了一种类似SQL的查询语言,被称为HiveQL(Hive Query L

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包