【发布时间】:2017-03-19 22:24:03
【问题描述】:
我想使用 protobuf 而不是 Json 在消息队列之间进行通信。
当只有一个原始消息时,我知道如何处理它。
假设 proto 文件为:
//person.proto
syntax = "proto3";
option java_outer_classname = "PersonProto";
message Person {
int32 id = 2;
string name = 1;
string email = 3;
}
现在,我可以用下面的方法来处理它:
PersonProto.Person person = PersonProto.Person.newBuilder()
.setEmail("123@test.com")
.setId(1)
.setName("name-test")
.build();
byte[] bytes = person.toByteArray();
//Transfer from publisher to consumer between message queue.
//I can deserialise it, because i know the proto message is Person.
PersonProto.Person.parseFrom(bytes);
但是如果有多个 proto 消息怎么办?
假设有另一个名为 Address 的原始消息。
syntax = "proto3";
option java_outer_classname = "PersonProto";
message Person {
int32 id = 2;
string name = 1;
string email = 3;
}
message Address {
string address = 1;
}
当消费者从消息队列中收到字节数组时,如何知道它是哪条原始消息?以及如何反序列化字节数组?
【问题讨论】:
标签: message-queue protocol-buffers