假设我想使用cake.proto
中定义的协议与ZMQ序列化并传输protobuf二进制文件:
syntax = "proto3";
message Cake {
int32 radius = 1;
}
我可以找到许多关于PUB / SUB模式的示例,其中订阅者使用字符串过滤主题:
socket.setsockopt_string(zmq.SUBSCRIBE, "abc")
但是当涉及到protobuf二进制文件时,订阅主题如何工作?我是使用字节本身还是ZMQ为带有标题的消息提供包装器?在这种情况下可以使用该报头?
答案 0 :(得分:2)
没有包装器,主题只是zeromq消息的第一帧。
如果您确信您的protobuf消息将始终以特定的字节序列(构成主题)开头,那么可以,您可以订阅该字节前缀模式。
另一个选择是将主题图案复制到初始帧中,然后通过ZMQ_SNDMORE
添加protobuf帧。如果您可以将许多protobuf帧打包到同一zmq消息中,则效率很高。如果每个protobuf消息都有其自己的“主题”,那么每个probubuf都会有一个额外的主题框架的开销。