【问题标题】:Is there a way to configure the generate method name for grpc-node client?有没有办法为 grpc-node 客户端配置生成方法名称?
【发布时间】:2025-12-27 16:20:13
【问题描述】:

我希望使用grpc-node 客户端与使用go-micro 框架在Go 中构建的微服务通信。我遇到了一个问题,go-micro 使用句点 (.) 定义方法名称来分隔命名空间和方法名称,而 grpc-node 使用斜杠 (/)。有没有办法配置这个模式让这两个进程相互通信?

【问题讨论】:

    标签: node.js microservices grpc


    【解决方案1】:

    gRPC over HTTP/2 protocol documentation 定义路径构造如下:

    路径 → ":path" "/" Service-Name "/" {方法名}

    带有此附加说明

    某些 gRPC 实现可能允许覆盖上面显示的 Path 格式,但强烈建议不要使用此功能。 gRPC 不会竭尽全力破坏使用这种覆盖的用户,但我们并不积极支持它,并且当路径不是上面显示的形式时,某些功能(例如,服务配置支持)将无法工作.

    因此,Node gRPC 客户端遵循规范,go-micro 使用的替代格式似乎在其代码生成插件 (here) 中进行了硬编码。我认为这是一个错误。

    话虽如此,在 Node gRPC 库中有一个可行的解决方法来匹配该方法名称格式。当您在 Node 中加载 .proto 文件时,每个客户端构造函数都有一个 service 成员,它是描述服务的纯 JavaScript 对象。它是方法名称到方法定义的映射,每个方法定义都包含一个path 成员。您可以修改每个方法的路径以匹配 go-micro 使用的模式,然后将生成的服务对象传递给 grpc.makeGenericClientConstructor 以获取连接到修改后的服务的新客户端构造函数。

    【讨论】:

      最近更新 更多