一个开源的强类型客户端(.NET 中的 Open Fegin)— Rabbit Go

小说:二月还能种植弯叶画眉草吗?作者:顺戏戏更新时间:2019-04-19字数:38226

在做RabbitCloud(之前是一个RPC,现在是一个微服务框架)的时候往往避不开客户端代理,之前把这些客户端代理都算作服务框架不可缺少的一部分,随着后期的深入发现这些客户端代理其实可以互通,类似spring cloud 的 open fegin。

因为它们最终的行为就是构建一个message进行编码,发送,然后解码服务端的返回信息。在阅读open fegin的源码之后写了Rabbit Go。

一个简单的客户端

image

image

调用示例

image

最新的样本:https://github.com/RabbitTeam/go/tree/master/samples

发生了什么?

我们使用fiddler来监听请求信息。

GetAsync

image

DeleteAsync

image

PostAsync

imageimage

PutAsync

imageimage

特性

  1. 丰富的拦截器(IAsyncRequestInterceptor、IAsyncExceptionInterceptor)
  2. 可替换的编解码器(默认为json,使用 Newtonsoft.Json)
  3. 全局拦截器
  4. 全局模型公约
  5. 良好的抽象与实现拆分(易扩展)
  6. url支持模板
  7. 可扩展的请求程序(目前只有HttpGoClient)
  8. 不只为HTTP(未来会添加对Grpc、dubbo等服务提供者的实现)

项目信息

源码地址:https://github.com/RabbitTeam/go

NuGet:https://www.nuget.org/packages/Rabbit.Go.Core

基于 Rabbit Go 的客户端

源码地址:DingTalk(钉钉开放平台)

用在生产的GoClient定义

书籍评论服务

image

image

image

账号服务

image

image

ps:生产项目集成了RabbitCloud,实现了服务发现、重试、负载均衡。每次调用过程中的 comment,user 会根据一定的策略自动解析成对应服务的真实ip地址和端口进行调用。

RabbitCloud还是一个实验性项目,目前只放出了源码,并没有任何集成文档。

开源地址:https://github.com/rabbitteam/rabbitcloud/tree/dev

接下来

  1. 在不使用DI的情况下使用
  2. 提供服务发现、重试、限流、断路器的支持(集成 Rabbit Cloud)
  3. 提供对Grpc的调用支持
  4. 提供对dubbo的调用支持

写在最后

.NET技术栈QQ群:384413261(点击加入 .NET Group

当前文章:http://leetaemin.cn/content/2019-01/26/content_21409.html

发布时间:2019-04-19 00:43:14

金森女贞小苗多少钱一棵 金森女贞的价格 金森女贞的报价 黑龙江红叶碧桃价格便宜吗? 7000棵8公分鸡爪槭上市销售,冠大杆直,物美价廉的选择 100万棵多花紫藤苗上市销售,全国大量发货中 四川哪有红梅树苗? 9公分红梅多少钱? 金边黄杨几月开花? 云南榉树价格便宜吗? 普通早熟禾一般都有什么品种? 百慕大草坪基地这里最大,出货量稳居全国前三名

33026 44345 81583 26611 74311 65799 40348 67894 19539 14144 98788 33998 28610 77381 12898 70431 23958 69293 41851 59554 55599 77439 69202

我要说两句: (0人参与)

发布