问题标签 [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.

0 投票
1 回答
961 浏览

protocol-buffers - 我可以覆盖在 Go GRPC 客户端调用中设置的端点前缀吗?

我有一个生成 C# 和 Go 代码的 protobuf。

protobuf 包含:

我正在为我的 Go GRPC 使用go-microprotoc-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 端点为前缀的命名空间?

0 投票
1 回答
324 浏览

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 吊舱

0 投票
2 回答
6534 浏览

go - 构建命令行参数:无法加载本地包:找不到提供包的模块

我无法使用 go mod 加载本地包。我有单独的 go.mod 文件用于 repoA 和 repoB。我在任何地方都找不到解决方案。操作系统是windows。

当我从repoA运行主文件时,我有两个带有存储库的模块。它会尝试找到repoB的模块/包,然后它会抛出一个错误说

找不到提供包的模块

我的回购结构:-

0 投票
1 回答
76 浏览

go - 如何在我的 main.go 中导入 go 接口包?

为清楚起见,大部分代码都被删除以更多地关注问题。我有一个使用以下代码go-micro调用的服务器文件:main.go

SRVService在另一个名为srv_service.go(具有相同包名)的文件中,我不知道如何导入它:

我应该如何SRVService访问main.go

0 投票
2 回答
948 浏览

go - 如何修复 Go-Micro 服务的端口

我正在运行 go-micro ,但无法为我的服务设置常量端口。有没有办法将端口分配给服务。

如果我正在运行我的服务,它会在每次执行时提供不同的端口。我希望它修复。

0 投票
0 回答
264 浏览

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 配置设置的。

0 投票
0 回答
1862 浏览

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 服务的及时响应,但我得到了超出上下文截止日期

0 投票
2 回答
1004 浏览

go - 如何通过 grpc-gateway 处理多个端点?

我确定所有服务都正常运行。

我有以下代码:

此代码段用于注册两个端点。

在我的 中main.go,我构建了一个解析器来解析名称到地址,然后注册两个端点并监听端口 8080。

但是我跑了之后go run main.go发现只能访问我注册的最后一个服务,也就是ssoservice(err = protos.RegisterSsoHandlerFromEndpoint(ctx, mux, r.Scheme()+"://author/sso", dialOpts)行)。

任何人都可以向我展示通过注册多个端点的正确方法的示例grpc-gateway吗?(使注册的所有服务grpc-gateway都可以成功访问)


[2020-01-31] 需要更多帮助,现在我的代码如下:

最新代码

其他代码与之前相同。

另外,这是名称解析器显示的结果:

名称解析器解析地址

0 投票
1 回答
1238 浏览

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不会生成 。我怎样才能解决这个问题

0 投票
2 回答
336 浏览

go - Go-micro rabbit mq 插件 - 优先发布消息

由于支持 RabbitMQ 版本 3.5.0 优先级队列 - https://www.rabbitmq.com/priority.html

如果在队列创建期间传递了 x-max-priority 参数,则可以声明队列。

我可以成功声明一个优先支持的队列

但是如何发布指定优先级的消息?

我找不到将优先级作为 MessageOption 或 PublishOption 传递的直接方法,但是,似乎有一种方法可以在 client.Publish 上下文中指定其他选项。我是否正在寻找正确的方向,如果是这样,你能帮我一点吗?

编辑:我能够执行以下操作而不会导致任何编译时错误。尽管如此,优先级仍然被忽略,并且消息以通常的方式出现