当前位置: 首页 > 知识库问答 >
问题:

如何为协议缓冲区rpc方法定义空参数?

公良鸿畅
2023-03-14

我有一个我想要定义的方法,叫做FindAll,它不需要参数。普罗托克在抱怨。

应为类型名。

这是针对行:
rpc findAll()返回(BenchmarksList);

syntax = "proto3";

package helloWorldGRPC;

service HelloWorldGRPCService {
    rpc findById (BenchmarksById) returns (Benchmarks);
    rpc findAll () returns (BenchmarksList);
}

message BenchmarksById {
    string id = 1;
}

message BenchmarksList {
    repeated Benchmarks benchmarks = 1;
}

message Benchmarks {
    string trans_id = 1;
    string protocol = 2;
    string database = 3;
    string updated_at = 4;
    string created_at = 5;
    repeated Action actions = 6;
}

message Action {
    string trans_id = 1;
    int32 payload_length = 2;
    string payload = 3;
    string status = 4;
    string updated_at = 5;
    string created_at = 6;
}

共有1个答案

慕容晔
2023-03-14

首选方法是传递-因为工具可能会识别并针对该场景进行优化。但实际上,该类型没有什么“特殊”,任何消息——空的或其他的——都足够了。

 类似资料:
  • 我有一个简单的客户端和服务器设置。客户端希望在服务器中使用ZeroMQ执行通信方法。我将使用REQ和REP套接字,因为它们适合这个用例。然而,我对protobuf的定义有疑问。我认为这两个选项可用于实现目标: 其中“control”包含要远程执行的方法的名称。另一种选择可以是: 最好的方法是什么?或者至少使用一种方法而不是另一种方法的权衡是什么?

  • 他们说,根据谷歌协议缓冲区文档中“定义服务”下的内容, 也可以将协议缓冲区与您自己的RPC实现一起使用。 据我了解,协议缓冲区并没有原生实现RPC。相反,它们提供了一系列必须由用户实现的抽象接口(就是我!)。所以我想利用ZeroMQ实现这些抽象接口进行网络通信。 我正在尝试使用ZeroMQ创建一个RPC实现,因为我正在进行的项目已经实现了基本消息传递的ZeroMQ(因此为什么我不使用gRPC,正如

  • 试图使用Ionic 4中的协议缓冲区进行编码 我已经下载了协议并用它来生成一堆_pb.js文件,每个. proto文件一个。很好。 首先关注原型示例。这是示例代码: 我做了一些更改以匹配我的文件。更改proto文件的名称。但是我的proto文件中没有包名称。所以我只是使用了消息名称。首先这是我的. proto文件的开头: 下面是我修改后的代码: 这似乎不起作用。我的控制台显示: 我相信我已经成功地

  • 问题内容: 我正在使用gSoap将旧式C 系统重构为SOA。我们遇到了一些性能问题(非常大的XML),因此我的领导要我看一下协议缓冲区。我做到了,它看起来非常酷(我们需要C 和Java支持)。但是协议缓冲区是仅用于序列化的解决方案,现在我需要将其发送到Java前端。从C ++和Java角度来看,我应该使用什么来通过HTTP(只是内部网络)发送那些序列化的内容? PS。另一个人试图加速我们的gSoa

  • 两者都是序列化库,由谷歌开发人员开发。他们之间有什么大的区别吗?将使用协议缓冲区的代码转换为使用FlatBuffers需要大量工作吗?

  • 在阅读这个相当长的问题之前,我提出了一个bughttps://github.com/GoogleCloudPlatform/python-docs-samples/issues/1103. 原型包和名称解析的留档状态 您可以使用其他定义。通过导入原始文件。导入另一个。在proto的定义中,您可以在文件的顶部添加一条import语句。 我的依赖于annotations.proto将HTTP/JSON