簡體   English   中英

activemq 如何配置在 python 中使用 stomp

[英]activemq how to configure to work with stomp in python

我在本地安裝並運行了 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進行進程間通信。

乍一看,我會說您正在嘗試連接到錯誤的端口。 開箱即用的 ActiveMQ 配置為在端口 61616 上使用 OpenWire 協議,並且未啟用 Stomp。 您需要檢查您的 ActiveMQ 配置文件並確保啟用 Stomp 傳輸,我們使用的標准端口是 Stomp 的 61613。 有關配置 Stomp 的一些信息,請參閱此頁面: ActiveMQ Stomp 指南

我今天遇到了類似的問題。 這是由於端口不正確。 默認情況下,stomp 將連接到 61613。使用此端口或更新代理以支持其他端口。

我不知道直接的答案,這可能太迂回而無用,但一種方法可能是查看 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 )。 盡管如此,他們確實做了你想要的,所以你可能會看一個舊的實現。 可能研究太多了——不確定得到答案有多難。 我很想看看自己是否有一個簡單的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM