4

我正在考虑使用 AMQP(使用 qpid)来启用 Python 和 Java 服务的混合相互通信。基本的短信似乎很简单,但与我研究过的所有其他短信技术一样,它似乎停止了。除了构建即时消息应用程序之外,我认为发送字符串并不是一件特别有用的事情,但一个又一个示例演示了如何发送未格式化的文本。

我的直觉是使用 XML(反)序列化或类似的东西(JSON、YAML、协议缓冲区等),它们在两种语言中都有很好的库支持。这是最佳实践吗?如果是,人们会推荐哪种(反)序列化协议?还是我在某处遗漏了要点,并且应该很满足发送少量文本?

4

3 回答 3

6

Owen,我可以谈谈 RabbitMQ。

AMQP 是一种二进制协议,您当然可以做的不仅仅是发送字符串!您打算使用哪个 Python 客户端?我们推荐 Barry Pederson 的客户端用于大多数用途:http ://barryp.org/software/py-amqplib/ 非常欢迎您来到 RabbitMQ 列表,就您的帖子和评论提出任何您喜欢的问题: -)

正如 James 所指出的,JSON 是好的。RabbitMQ 支持通过 HTTP 连接到 AMQP 后端的 JSON-RPC。人们还将 RabbitMQ 与 Orbited 一起用于彗星类型的应用程序。

此外,我们是 James 发明的 XMPP 和 STOMP 的粉丝并支持。STOMP 对于特定类别的消息传递应用程序很方便,并且 RabbitMQ 支持直接路由和基于主题的路由。我们发现它是一种与 ActiveMQ 互操作的好方法,在这种情况下更喜欢它而不是 JMS。

我希望您为您的用例找到合适的服务器,并建议您尝试不同的组合以获得最佳效果。

干杯,

亚历克西斯

于 2008-12-03T19:05:37.667 回答
2

值得一提的是,我在使用 AMQP + Protocol Buffers 方面一直有很好的体验。

如果发件人正在序列化消息,您可能需要在标头中包含一个 id,以便您知道如何在接收端进行反序列化。但是,这并不太难完成。

于 2009-06-02T00:27:31.773 回答
1

XML 或 JSON 可能是最简单的。协议缓冲区很酷,但如果您真的需要,我会将其视为稍后考虑的优化(因为它本质上是二进制线路格式有点难以使用)。

顺便说一句,您可能想看看 Stomp 而不是 AMQP;它有更多的客户端库和支持的消息代理。例如Apache ActiveMQ,它比 qpid 或 rabbitmq 更受欢迎——或者实际上任何JMS 提供程序都可以正常工作。

于 2008-12-02T09:22:24.613 回答