通过消息代理进行 Java/Python 通信
通过消息代理进行通信,同时支持(C)Python和Java / JMS应用程序的好解决方案是什么?我的特殊要求是:
- 开源解决方案
- 在基于 Linux 的系统上可用
- 不需要发送方和接收方之间的会合(即使用消息代理)
- 单个事件队列支持多个生产者和使用者(每个消息只有一个使用者接收)
- 具有两阶段提交的工作单元支持(XA 支持很好)
- 支持持久消息(即在代理重新启动后仍能存活的消息)
- 支持 JMS for Java 客户机
- 没有组件是“边缘”,这意味着由于缺乏社区支持/兴趣而面临失去维护的风险
- 如果有一个Python客户端设法“说出JMS”,那就太好了,但是一个答案包括编写我自己的Python JMS层的任务是可以接受的。
我很难找到解决这个问题的方法。Apache的ActiveMQ没有开箱即用的Python支持。ZeroMQ 需要一次会合。RabbitMQ 似乎不支持 JMS。我发现的最佳候选者是ActiveMQ和pyactivemq库的组合。但是 pyactivemq 的第一个和最后一个版本是在 2008 年发布的,所以看起来这不符合我的“无边缘”要求。
理想的答案将是一个或多个支持良好且记录良好的开源包的名称,您个人已使用这些包在Java / JMS和Python应用程序之间进行通信,并且不需要大量的集成工作即可开始。一个答案包括“简单”(最多几天的工作)实现额外的胶水代码以满足上述所有要求,将是可以接受的。在没有好的开源候选者的情况下,商业解决方案也是可以接受的。
此外,Jython也出局了。(要是我能...)相同的Python应用程序将需要使用仅在CPython中可用的模块。