7

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を使用したいと思います。

4

3 に答える 3

6

一見、間違ったポートに接続しようとしていると思います。すぐに使用できるActiveMQは、ポート61616でOpenWireプロトコルを使用するように構成されており、Stompは有効になっていません。ActiveMQ構成ファイルをチェックして、Stompトランスポートが有効になっていることを確認する必要があります。使用する標準ポートはStompの61613です。Stompの構成に関する情報については、このページを参照してください:ActiveMQStompガイド

于 2011-06-04T11:20:05.650 に答える
0

直接の答えはわかりません。これは遠回りすぎて役に立たないかもしれませんが、1つの方法は、Celeryの古いコードを調べることかもしれません。以前はニンジンを介してactivemq/stompをサポートしていました(例:http://jasonmbaker.com/how-celery-carrot-and-your-messaging-stack-wo)-まだサポートしていると思いましたが、そうではないようですもう(FAQによると:http://ask.github.com/celery/faq.html#can-i-use-celery-with-activemq-stomp)。それでも、彼らはあなたがしばらく前に望んでいたことを正確に実行したので、あなたは潜在的に古い実装を見ることができました。研究が多すぎるかもしれません-答えを得るのがどれほど難しいかわかりません。自分で簡単な答えがあるかどうか興味があります。

于 2011-06-04T09:30:57.577 に答える
0

私は今日同様の問題に直面しました。これは、ポートが正しくないことが原因です。デフォルトでは、stompは61613に接続します。このポートを使用するか、他のポートをサポートするようにブローカーを更新してください。

于 2014-12-10T04:43:48.917 に答える