微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过消息代理进行Java / Python通信

什么是通过消息代理进行通信的良好解决方案,它支持(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中可用的模块.

解决方法

I have had a surprisingly hard time finding a solution for this.
Apache’s ActiveMQ has no Python support out of the Box.

ActiveMQ经纪人完全支持使用Stomp协议开箱即用. Stomp是一种基于文本的消息传递协议,具有许多平台和语言的客户端.

ActiveMQ的文档应包含有关如何设置连接器的信息.在其最简单的形式中,启用连接器将类似于:

<transportConnectors>
   <transportConnector name="stomp" uri="stomp://localhost:61613"/>
</transportConnectors>

一旦在代理端启用,您可以使用任何支持踩踏的python库.然后,您可以在python侧使用Stomp,在Java端使用JMS与代理进行通信,并从特定目的地发送/接收.

原文地址:https://www.jb51.cc/java/124750.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐