【发布时间】:2014-01-15 07:01:07
【问题描述】:
我选择了 jeroMQ 来构建用于从多个客户端发布内容的异步消息通道。在另一端,服务器端工作人员仅在服务器想要根据收到的消息通知客户端时才处理请求并通知客户端。
在深入挖掘时,正在寻找消息库来编组/取消编组消息。我发现 kvpmsg 类可以完成简单键值的工作。
如果存在某些标准库,不想重新发明轮子,可以应用于更大的对象
【问题讨论】:
标签: json message-queue zeromq jeromq
我选择了 jeroMQ 来构建用于从多个客户端发布内容的异步消息通道。在另一端,服务器端工作人员仅在服务器想要根据收到的消息通知客户端时才处理请求并通知客户端。
在深入挖掘时,正在寻找消息库来编组/取消编组消息。我发现 kvpmsg 类可以完成简单键值的工作。
如果存在某些标准库,不想重新发明轮子,可以应用于更大的对象
【问题讨论】:
标签: json message-queue zeromq jeromq
您似乎在要求数据序列化库。检查维基百科a list and a comparison of data serialization formats。
还有一个 relevant entry in ZeroMQ FAQ 解释了为什么 ZeroMQ 不包含任何序列化格式:
ØMQ 是否包含用于将数据序列化到/从线表示的 API?
没有。这一设计决策遵循了“做一件事,做好”的 UNIX 理念。在 ØMQ 的情况下,一件事是移动消息,而不是将数据编组到二进制表示。
一些中间件产品确实提供了自己的序列化 API。我们认为这样做会导致像 CORBA(1055 页)这样的线级规范臃肿。相反,我们选择使用最简单的线路格式,以确保轻松的互操作性、效率并减少代码(和错误)膨胀。
如果您想使用序列化库,那里有很多。参见示例
- Google Protocol Buffers
- MessagePack
- JSON-GLib
- C++ BSON 库
请注意,序列化实现的性能可能不如您预期的那么好。您可能需要使用多种序列化格式和库对工作负载进行基准测试,以了解性能以及哪种格式/实现最适合您的用例(还必须考虑易于开发)。
【讨论】: