Python 中的 ActiveMQ 监听器
Posted
技术标签:
【中文标题】Python 中的 ActiveMQ 监听器【英文标题】:ActiveMQ Listener in Python 【发布时间】:2012-07-23 17:44:35 【问题描述】:我必须在 python 中为 ActiveMQ 编写一个监听器。
有没有可以用来编写监听器的python包。 还有 Stomp/Openwire 协议是什么。当我启动 activemq 时,我看到三个带有协议的 url,即 tcp、ssl、stomp。
任何帮助将不胜感激
编辑!:我的另一个问题是假设我们使用 stomp 和 openwire 协议启动代理。假设代理 URL 现在是 tcp://localhost:61616 和 stomp://localhost:61613。所以现在代理正在监听两个不同的端口。我的问题是,如果生产者在 tcp 端口上发布消息,那么该消息是否会被 stomp 端口上的订阅者消费?另外,如果 tcp 和 stomp 上的两个订阅者分别在同一个队列上等待,他们都会收到消息吗?
【问题讨论】:
【参考方案1】:对于 python,您可以使用 stomppy 之类的东西,它可以让您与任何支持 STOMP 的代理进行互操作。 ActiveMQ 本身使用自己的 openwire 协议,但也可以使用 STOMP 和 MQTT。您需要添加一个 STOMP TransportConnector,请参阅 ActiveMQ 的 STOMP page。
【讨论】:
虽然 pyactivemq 没有更多的开发,但最新版本 (0.1.0) 稳定。我安装了 pyactivemq 但我得到 pyactivemq.CMSException: OpenWireFormatNegotiator::requestWire 格式协商超时:对等体没有发送他的有线格式。生产者也是用Java编写的,我只想写一个消费者。另外我的问题是系统管理员只启动了 openwire 协议而不是 stomp 协议,因此我不得不放弃 STOMP.py,尽管我之前考虑过使用它。 @TimBish,我猜你是 pyactivemq 的作者,你能帮我找出错误吗? 我不是 pyActiveMQ 的作者,原作者对该项目没有更多的兴趣,因此它没有维护并且不支持构建它的最新版本的 ActiveMQ-CPP。我真的不知道它支持的最后一个版本是什么。您最好查看已维护的 Stomp python 客户端。 我在 pyactivemq 讨论线程中到处都是你的 cmets。无论如何,使用 Stomp python 是我最后的选择,因为我必须与系统管理员交谈才能启动该协议。还有两个消费者一个队列,都接收每条消息的副本......听起来是错误的还是它是?【参考方案2】:最后,我使用 STOMP python 来监听 ActiveMQ 代理。 PyActiveMq 使用起来很不稳定,因为它不再被维护。
【讨论】:
你能分享你的代码吗?我想用python在线听一个话题。那么我应该建立一个活跃的持久订户吗?以及如何以上是关于Python 中的 ActiveMQ 监听器的主要内容,如果未能解决你的问题,请参考以下文章
ActiveMQ CMS:在创建消费者和设置监听器之间会丢失消息吗?
Spring + JMS + ActiveMQ实现简单的消息队列(监听器异步实现)