activemq如何配置在python中使用stomp
Posted
技术标签:
【中文标题】activemq如何配置在python中使用stomp【英文标题】:activemq how to configure to work with stomp in python 【发布时间】:2011-09-08 05:50:21 【问题描述】:我已经在本地安装并运行了activemq,但是当我运行以下脚本时,我得到一个错误:
#!/usr/bin/env python
import time
import sys
import stomp
class MyListener(object):
def on_error(self, headers, message):
print 'received an error %s' % message
def on_message(self, headers, message):
print 'received a message %s' % message
conn = stomp.Connection(host_and_ports=[('localhost', 61616)])
conn.set_listener('', MyListener())
conn.start()
conn.connect()
conn.subscribe(destination='/home/bitcycle/svn/cass/queue.test', ack='auto')
conn.send('Test', destination='/home/bitcycle/svn/cass/queue.test')
time.sleep(2)
conn.disconnect()
错误:
./proc.py
No handlers could be found for logger "stomp.py"
Traceback (most recent call last):
File "./proc.py", line 20, in
conn.disconnect()
File "/usr/local/lib/python2.7/dist-packages/stomp.py-3.0.3-py2.7.egg/stomp/connect.py", line 387, in disconnect
self.__send_frame_helper('DISCONNECT', '', utils.merge_headers([self.__connect_headers, headers, keyword_headers]), [ ])
File "/usr/local/lib/python2.7/dist-packages/stomp.py-3.0.3-py2.7.egg/stomp/connect.py", line 453, in __send_frame_helper
self.__send_frame(command, headers, payload)
File "/usr/local/lib/python2.7/dist-packages/stomp.py-3.0.3-py2.7.egg/stomp/connect.py", line 489, in __send_frame
raise exception.NotConnectedException()
stomp.exception.NotConnectedException
有人可以帮助我了解我需要做什么才能使其正常工作吗?我想使用activemq进行进程间通信。
【问题讨论】:
【参考方案1】:我不知道直接的答案,这可能过于迂回而无用,但一种方法可能是查看 Celery 的旧代码。他们曾经通过胡萝卜支持 activemq/stomp(例如 http://jasonmbaker.com/how-celery-carrot-and-your-messaging-stack-wo )——我认为他们仍然支持,但看起来他们不再支持了(根据常见问题解答:http://ask.github.com/celery/faq.html#can-i-use-celery-with-activemq-stomp)。尽管如此,他们确实做了你想要的,所以你可能会看一个旧的实现。可能研究太多了——不确定得到答案有多难。我有兴趣看看自己是否有一个简单的答案。
【讨论】:
【参考方案2】:乍一看,我会说您正在尝试连接到错误的端口。开箱即用的 ActiveMQ 配置为在端口 61616 上使用 OpenWire 协议,并且未启用 Stomp。您需要检查您的 ActiveMQ 配置文件并确保启用 Stomp 传输,我们使用的标准端口是 61613 用于 Stomp。有关配置 Stomp 的一些信息,请参阅此页面:ActiveMQ Stomp Guide
【讨论】:
【参考方案3】:我今天遇到了类似的问题。这是由于端口不正确。默认情况下,stomp 将连接到 61613。使用此端口或更新代理以支持其他端口。
【讨论】:
以上是关于activemq如何配置在python中使用stomp的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JBoss 中配置 ActiveMQ JCA 连接器以使用 XA 连接?
如何使用 ActiveMQ Artemis 在 Wildfly 24 服务上配置 jms-queue