通过同时支持(C)Python和Java/JMS应用程序的消息代理进行通信的好解决方案是什么?我的特殊要求是:
我很难找到解决这个问题的办法。Apache的ActiveMQ没有现成的Python支持。ZeroMQ需要集合。RabbitMQ似乎不支持JMS。我找到的最好的候选者是ActiveMQ和pyactivemq库的组合。但是pyactivemq的第一次也是最后一次发布是在2008年,所以这似乎不符合我的“无边缘”要求。
理想的答案是一个或多个受良好支持且有良好文档记录的开源包的名称,这些包是您个人用来在Java/JMS和Python应用程序之间进行通信的,并且不需要大量的集成工作就可以开始。一个包含“简单”(最多几天的工作)的附加粘合代码实现以满足上述所有要求的答案是可以接受的。如果没有一个好的开源候选人,商业解决方案也是可以接受的。
而且,Jython不在。(如果我能…)同样的Python应用程序将需要使用CPython中的模块。
JMS是规范而不是实现。RabbitMQ是一个真正的选择。
我也很高兴地使用了Jboss中的HornetQhttp://www.jboss.org/hornetq,因为它更符合Java EE中的每一个事物,但是RabbitMQ将是一个特别的选择,如果您也使用Spring的话
你可能想看看OpenAMQ,再看看RabbitMQ。
RabbitMQ和OpenAMQ使用的底层消息传递技术是AMQP。您应该能够很容易地找到针对这两个代理(以及表面上符合规范的任何其他代理)工作的Python和Java客户机。
如果JMS是必需的,那么您可能可以找到在AMQP之上实现的JMS客户机(OpenAMQ一次提供了这样一个客户机,但我不确定它的当前状态)。
ActiveMQ代理完全支持使用现成的Stomp协议。Stomp是一种基于文本的消息传递协议,它有许多平台和语言的客户端。
ActiveMQ的文档应该包含关于如何为stomp设置连接器的信息。在其最简单的形式中,启用连接器类似于:
一旦在代理端启用,就可以使用任何支持stomp的python库。然后,可以在python端使用Stomp,在java端使用JMS与代理通信,并从特定目的地发送/接收消息。
相关问题 更多 >
编程相关推荐