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