我正在考虑使用AMQP(使用qpid)来实现Python和Java服务的混合。基本的文本消息传递看起来很简单,但是,正如我调查过的所有其他消息传递技术一样,它似乎停止了。除了构建即时消息传递应用程序之外,我原本认为发送字符串并不是一件特别有用的事情,例如示例后演示了发送未格式化的文本。
我的直觉是使用XML(反)序列化或类似的东西(JSON,YAML,Protocol Buffers等),它们在两种语言中都有很好的库支持。这是最佳实践,如果是这样,人们会推荐哪种(反)序列化协议?或者我在某处错过了这一点,并且应该非常满意地发送少量文本?
答案 0 :(得分:6)
欧文,请问关于RabbitMQ的一些话。
AMQP是一个二进制协议,你当然可以做更多的事情而不是发送字符串!您打算使用哪个Python客户端?我们建议Barry Pederson的客户使用最多:http://barryp.org/software/py-amqplib/我们非常欢迎您来到RabbitMQ列表并询问您对与帖子和评论相关的任何问题: - )
詹姆斯指出,JSON是善良的。 RabbitMQ支持通过HTTP连接到AMQP后端的JSON-RPC。人们还将RabbitMQ与Orbited一起用于彗星类应用。
此外,我们是詹姆斯发明的粉丝,并支持XMPP和STOMP。 STOMP对于某类消息传递应用程序非常方便,RabbitMQ支持直接和基于主题的路由。我们发现它是与ActiveMQ交互的好方法,在这种情况下更喜欢JMS。
我希望您为自己的用例找到合适的服务器,并建议您尝试不同的组合,以获得最佳效果。
干杯,
亚历
答案 1 :(得分:2)
对于它的价值,我一直在使用AMQP +协议缓冲区获得良好的体验。
如果发件人正在序列化邮件,您可能需要在标头中包含一个ID,以便您知道如何在接收方反序列化。但是,要完成这个并不是太麻烦。
答案 2 :(得分:1)
XML或JSON可能是最简单的。协议缓冲区很酷但是如果你真的需要的话,我会把它当作优化来考虑(因为它有点难以使用本质上是二进制有线格式)。
你可能想看看Stomp而不是AMQP;它有更多的客户端库和支持的消息代理。例如Apache ActiveMQ这比qpid或rabbitmq更受欢迎 - 或者确实任何JMS provider都可以正常使用。