问题标签 [go-micro]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
protocol-buffers - 我可以覆盖在 Go GRPC 客户端调用中设置的端点前缀吗?
我有一个生成 C# 和 Go 代码的 protobuf。
protobuf 包含:
我正在为我的 Go GRPC 使用go-micro和protoc-gen-micro。我正在为我的 Go 包使用Go 模块。我将生成的 Go 代码推送到我的 protobuf 存储库有几个原因:(a) 使用 Git 子模块可能会很痛苦 (b) 引用外部包中的类型的 protobuf 要求外部包具有定义的绝对包 URL (c) 这就是谷歌的做法(例如structpb),所以这似乎是“标准”。
从该原型生成的 C# 服务器/客户端服务/命中“/myprotobuf.Service/Method”处的端点,并且工作正常。
C# 的 GRPC_TRACE 给出:
调用 C# 服务器的 Go / go-micro 客户端给出:
随后出现错误。请注意,路径不同。C# GRPC 处理程序中的断点和 Console.WriteLine 永远不会被命中,这是有道理的,因为我们没有命中已知端点。
解决方案是什么?
go get
似乎需要 .git 在包 URL 的末尾。- go modules 需要 "module" 和 "package" 定义来匹配 URL。
- C# 不喜欢“。” 在命名空间中。
因此,似乎 Go 和 C# 总是会在端点前面加上认为的包/命名空间是什么,并且他们永远不会就包/命名空间应该是什么达成一致。
有没有办法覆盖以 GRPC 端点为前缀的命名空间?
kubernetes - kubenetes - greeter-web 调用 greeter-srv 500 错误?
我正在尝试让这个 go-micro greeter 示例在 Kubernetes 上运行https://github.com/micro/examples/tree/master/greeter
我可以在 docker 本地运行它。但是,当我尝试通过 Kubernetes ( http://{{external-ip}}/greeter/say/hello
) 访问 greeter api 服务时,我收到错误消息:
{"id":"go.micro.api","code":500,"detail":"not found","status":"Internal Server Error"}
为了排除故障,我简化了场景,我只是希望能够通过 micro api 调用 go-micro api 服务。以下是我的设置:
micro api调用greeter-web成功,但是greeter-web调用greeter-srv错误。
错误信息
{“id”:“go.micro.client”,“code”:500,“detail”:“选择欢迎节点时出错:未找到”,“status”:“内部服务器错误”}
我的 yaml 在这里:
迎宾网
迎接者-srv
迎宾服务
更大的 srv 吊舱
go - 构建命令行参数:无法加载本地包:找不到提供包的模块
我无法使用 go mod 加载本地包。我有单独的 go.mod 文件用于 repoA 和 repoB。我在任何地方都找不到解决方案。操作系统是windows。
当我从repoA运行主文件时,我有两个带有存储库的模块。它会尝试找到repoB的模块/包,然后它会抛出一个错误说
找不到提供包的模块
我的回购结构:-
go - 如何在我的 main.go 中导入 go 接口包?
为清楚起见,大部分代码都被删除以更多地关注问题。我有一个使用以下代码go-micro
调用的服务器文件:main.go
SRVService在另一个名为srv_service.go
(具有相同包名)的文件中,我不知道如何导入它:
我应该如何SRVService
访问main.go
?
go - 如何修复 Go-Micro 服务的端口
我正在运行 go-micro ,但无法为我的服务设置常量端口。有没有办法将端口分配给服务。
如果我正在运行我的服务,它会在每次执行时提供不同的端口。我希望它修复。
go - consul.watch: Watch (type: services) errored: Unexpected response code: 400 (Client sent an HTTP request to an HTTPS server
我正在 go micro 中创建一个 Web 服务...
其中 reg := registry.NewRegistry(registryOptions)
我正在使用 --registery=consul 启动服务
服务在 docker 容器内运行..虽然服务向领事注册,但我仍然遇到问题..
consul.watch: Watch (type: services) errored: Unexpected response code: 400 (Client sent an HTTP request to an HTTPS server
Consul 是为 TLS 配置设置的。
go - 高等待时间在获得响应或上下文截止日期之前超出 go-micro
我有一个使用 go-micro 编写的 grpc 客户端,它正在调用 grpc 微服务,该微服务进一步连接到弹性搜索以获取搜索结果。
我正在创建我的 grpc 客户端的 Web 服务和连接到 elasticsearch 的 grpc 服务正在注册到同一个注册表领事(启用 TLS 配置)。
但是当客户端尝试调用 grpc 服务时,有时请求会成功,但有时我会超出上下文超时。
我不确定 consul 是否需要时间来返回服务信息,或者是弹性搜索的连接问题,还是 grpc 客户端存在问题。
请帮助我在这个问题上停留了这么久。提前致谢。
我尝试更改我的 grpc 客户端的连接池大小。我尝试增加注册表 ttl ,注册表超时但没有任何效果。
领事“github.com/micro/go-plugins/registry/consul”
如果我取消注释超时,我会在服务运行状况检查(请求超时)时收到 consul watch 错误(可能是因为阻塞查询)。
我也在使用 --registry=consul
这是我调用弹性搜索服务的 grpc 客户端
这是我的弹性搜索客户端 -
Grpc 客户端应该得到 grpc 服务的及时响应,但我得到了超出上下文截止日期
go - 如何通过 grpc-gateway 处理多个端点?
我确定所有服务都正常运行。
我有以下代码:
此代码段用于注册两个端点。
在我的 中main.go
,我构建了一个解析器来解析名称到地址,然后注册两个端点并监听端口 8080。
但是我跑了之后go run main.go
发现只能访问我注册的最后一个服务,也就是sso
service(err = protos.RegisterSsoHandlerFromEndpoint(ctx, mux, r.Scheme()+"://author/sso", dialOpts)
行)。
任何人都可以向我展示通过注册多个端点的正确方法的示例grpc-gateway
吗?(使注册的所有服务grpc-gateway
都可以成功访问)
[2020-01-31] 需要更多帮助,现在我的代码如下:
其他代码与之前相同。
另外,这是名称解析器显示的结果:
go - micro_out:protoc-gen-micro:插件失败
我正在尝试 go-micro,但在生成.micro
样板代码时遇到问题。我已经设置了我的环境,甚至通过了我的直接目录GOPATH
但得到了错误
/Users/Olar/home/golib/bin/protoc-gen-micro: program not found or is not executable 请使用绝对路径指定程序或确保程序在您的 PATH 系统变量中可用 --micro_out: protoc-gen -micro:插件失败,状态码为 1。
我运行的命令
删除 时--micro_out=.
,greeter.pb.go
会生成文件,但.micro
不会生成 。我怎样才能解决这个问题
go - Go-micro rabbit mq 插件 - 优先发布消息
由于支持 RabbitMQ 版本 3.5.0 优先级队列 - https://www.rabbitmq.com/priority.html
如果在队列创建期间传递了 x-max-priority 参数,则可以声明队列。
我可以成功声明一个优先支持的队列
但是如何发布指定优先级的消息?
我找不到将优先级作为 MessageOption 或 PublishOption 传递的直接方法,但是,似乎有一种方法可以在 client.Publish 上下文中指定其他选项。我是否正在寻找正确的方向,如果是这样,你能帮我一点吗?
编辑:我能够执行以下操作而不会导致任何编译时错误。尽管如此,优先级仍然被忽略,并且消息以通常的方式出现