如何在 gcloud pubsub 中为主题添加 protobuf 文件?

kne*_*rth 2 publish-subscribe google-cloud-pubsub

在 google cloud 的 pubsub 中,我可以看到在创建新主题时,我必须创建一条新消息。我可以在那里存储一个 protobuf 文件,而不必在键值对中编写整个消息结构吗?对于将要编写的 protobuf 代码,我的意思是this。如果 protobuf 不打算放在 gcloud pubsub 上,我如何将它与 grpc 客户端一起使用?

Kam*_*osn 5

如果您想通过PublishAPI发送 ProtoBuf 消息,您应该通过将其序列化为 aByteString然后将其设置为消息的data字段来实现。例如,如果您正在使用Java 客户端库,并且您有一些 ProtoBuf 类型的Publisherand obj,那么您可以执行以下操作:

PubsubMessage message = PubsubMessage.newBuilder()
    .setData(obj.toByteString())
    .build();
ApiFuture<String> response = publisher.publish(message);
...
Run Code Online (Sandbox Code Playgroud)

在订阅端,您将解码MessageReceiver 中的消息:

public void receiveMessage(PubsubMessage message, AckReplyConsumer consumer) {
  ProtoBufMessage obj;
  try {
    obj = ProtoBufMessage.parseFrom(message.getData());
  } catch (Exception e) {
    // Handle improperly encoded message
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)