草庐IT

RPC和GRPC

全部标签

go - Twitch 是否可以将 GraphQL 与 Twirp RPC 框架一起使用

我有一个使用Twirp的Golang程序,我想创建GraphQl服务器,但据我所知,twirp构建在RestAPI之上 最佳答案 绝对有可能。您只需对基于Twirp的RPCAPI进行包装。这类似于在RestAPI上包装GraphQLAPI。你还应该readthisarticle,其中显示了graphqlapi对其余api的包装。 关于go-Twitch是否可以将GraphQL与TwirpRPC框架一起使用,我们在StackOverflow上找到一个类似的问题:

go - gRPC 和 Swagger 注解区别

我有一个ProtocolBuffer定义,其中包括google.protobuf.Timestamp作为消息的一部分。Timestamp消息非常简单,具有以下定义:messageTimestamp{int64seconds=1;int32nanos=2;}因此,gRPC负载如预期的那样作为一个简单的值元组出现。但是,我还想为同一消息的RESTAPI生成一些swagger注释,但它似乎将时间戳转换为RFC3339样式字符串:"timestamp":{"type":"string","format":"date-time","title":"timestamp"}我最近开始使用Protoc

go - gRPC 和 Swagger 注解区别

我有一个ProtocolBuffer定义,其中包括google.protobuf.Timestamp作为消息的一部分。Timestamp消息非常简单,具有以下定义:messageTimestamp{int64seconds=1;int32nanos=2;}因此,gRPC负载如预期的那样作为一个简单的值元组出现。但是,我还想为同一消息的RESTAPI生成一些swagger注释,但它似乎将时间戳转换为RFC3339样式字符串:"timestamp":{"type":"string","format":"date-time","title":"timestamp"}我最近开始使用Protoc

go - 带有 AMQP 的 Golang 中的 JSON RPC

我使用“github.com/streadway/amqp”通过队列(RabbitMQ)进行异步处理请求。我使用“github.com/gorilla/rpc”注册我的服务,没有解决方法,但我必须使用丑陋的解决方案将amqp.Delivery转换为http.Request(mux.Server只能与http.Request一起使用).我可以为这个任务使用更优雅的解决方案吗?我找不到AMQP的JSONRPC路由器。 最佳答案 首先,RPC和发布-订阅(例如AMQP)是两种非常不同的野兽;试图用一个来实现另一个不一定是错的或坏的,但它肯

go - 带有 AMQP 的 Golang 中的 JSON RPC

我使用“github.com/streadway/amqp”通过队列(RabbitMQ)进行异步处理请求。我使用“github.com/gorilla/rpc”注册我的服务,没有解决方法,但我必须使用丑陋的解决方案将amqp.Delivery转换为http.Request(mux.Server只能与http.Request一起使用).我可以为这个任务使用更优雅的解决方案吗?我找不到AMQP的JSONRPC路由器。 最佳答案 首先,RPC和发布-订阅(例如AMQP)是两种非常不同的野兽;试图用一个来实现另一个不一定是错的或坏的,但它肯

google-app-engine - 将 grpc 与最新的 appengine sdk (golang 1.4.2) 结合使用

使用最新的appengineSDK,即go版本1.4.2:gogetgoogle.golang.org/grpc由于对http2的依赖而失败,这显然不适用于当前的appenginesdk版本。似乎http2的东西只适用于1.6+:fromGo1.6andlater(引用:https://godoc.org/golang.org/x/net/http2)调用gogetgolang.org/x/net/http2没有修复错误虽然我最初是在使用谷歌云存储时发现它的,但它似乎在整个库中都在使用:https://github.com/GoogleCloudPlatform/gcloud-gola

google-app-engine - 将 grpc 与最新的 appengine sdk (golang 1.4.2) 结合使用

使用最新的appengineSDK,即go版本1.4.2:gogetgoogle.golang.org/grpc由于对http2的依赖而失败,这显然不适用于当前的appenginesdk版本。似乎http2的东西只适用于1.6+:fromGo1.6andlater(引用:https://godoc.org/golang.org/x/net/http2)调用gogetgolang.org/x/net/http2没有修复错误虽然我最初是在使用谷歌云存储时发现它的,但它似乎在整个库中都在使用:https://github.com/GoogleCloudPlatform/gcloud-gola

go - 尝试了解golang中gRPC客户端中channel的使用

有人可以帮我了解gRPC代码客户端中channel的用法吗(双向流式RPC):https://grpc.io/docs/tutorials/basic/go.html这是代码:stream,err:=client.RouteChat(context.Background())waitc:=make(chanstruct{})gofunc(){for{in,err:=stream.Recv()iferr==io.EOF{//readdone.close(waitc)return}iferr!=nil{log.Fatalf("Failedtoreceiveanote:%v",err)}lo

go - 尝试了解golang中gRPC客户端中channel的使用

有人可以帮我了解gRPC代码客户端中channel的用法吗(双向流式RPC):https://grpc.io/docs/tutorials/basic/go.html这是代码:stream,err:=client.RouteChat(context.Background())waitc:=make(chanstruct{})gofunc(){for{in,err:=stream.Recv()iferr==io.EOF{//readdone.close(waitc)return}iferr!=nil{log.Fatalf("Failedtoreceiveanote:%v",err)}lo

go - 使用golang gRPC客户端调用多个IP地址

我有grpc服务器192.168.1.12:8800和192.168.1.13:8800,我想使用grpc.Dial连接它们ip列表,而不是服务器发现,我该怎么办?conn,err=grpc.Dial("192.168.1.12:8800,192.168.1.13:8800",grpc.WithInsecure())有错误rpcerror:code=Unavailabledesc=allSubConnsareinTransientFailure,latestconnectionerror:connectionerror:desc=\"transport:Errorwhiledialin