Go 如何使用protobuf二进制文件在PUB/SUB(ZeroMQ)中进行过滤?

Go 如何使用protobuf二进制文件在PUB/SUB(ZeroMQ)中进行过滤?,go,protocol-buffers,zeromq,Go,Protocol Buffers,Zeromq,我使用Go、ZeroMQ和protobuf来编写微服务 ZeroMQ具有PUB/SUB原型。(zmq4Go中的lib)。如何在带有二进制protobuf消息的SUB消息中使用筛选器 例如,我的原型消息: syntax=“proto3” 我想筛选值为userId的SUB客户端的消息: listener.SetSubscribe("42") // <-string not working. listener.SetSubscribe(“42”)/我知道了: listene

我使用Go、ZeroMQ和protobuf来编写微服务

ZeroMQ具有
PUB/SUB
原型。(
zmq4
Go中的lib)。如何在带有二进制protobuf消息的
SUB
消息中使用筛选器

例如,我的原型消息:

syntax=“proto3”

我想筛选值为
userId
SUB
客户端的消息:

listener.SetSubscribe("42") // <-string not working.
listener.SetSubscribe(“42”)/我知道了:

listener.SetSubscribe( string( []byte{ 10, 2 } ) + "42" )

您可能已经注意到,除非Go绑定执行一些幕后魔术,否则本机ZeroMQ API将在消息负载的左侧对设置的主题字符串进行纯二进制匹配。这不需要,但可能会与消息有效负载所遵循的某些(protobuf或其他协议相关)组合发生冲突,因此不要忘记,底层API只不过是针对任何当前项进行左对齐的字符串-(字节)-匹配,存储在设置的主题字符串列表的实际状态中。不管怎么说,享受禅宗的力量ZeroMQ@user3666197谢谢你的评论
listener.SetSubscribe( string( []byte{ 10, 2 } ) + "42" )