activemq, как настроить работу с stomp в python - PullRequest
7 голосов
/ 04 июня 2011

У меня установлено и работает 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 для межпроцессного взаимодействия.

Ответы [ 3 ]

5 голосов
/ 04 июня 2011

На первый взгляд я бы сказал, что вы пытаетесь подключиться не к тому порту. Из коробки ActiveMQ настроен для использования протокола OpenWire на порту 61616, и Stomp не включен. Вам необходимо проверить файл конфигурации ActiveMQ и убедиться, что транспорт Stomp включен, стандартный порт, который мы используем, - 61613 для Stomp. См. Эту страницу для получения дополнительной информации о настройке Stomp: ActiveMQ Stomp Guide

0 голосов
/ 10 декабря 2014

Я столкнулся с подобной проблемой сегодня.Это связано с неправильным портом.По умолчанию stomp подключается к 61613. Используйте этот порт или обновите посредник для поддержки других портов.

0 голосов
/ 04 июня 2011

Я не знаю прямого ответа, и он может быть слишком сложным, чтобы быть полезным, но одним из способов может быть поиск более старого кода Селери.Раньше они поддерживали 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). Тем не менее, они сделалиделайте то, что вы хотите, некоторое время назад, чтобы вы могли посмотреть на более старую реализацию. Может быть, слишком много исследований - не уверен, насколько сложно получить ответ. Мне будет интересно посмотреть, есть ли простой ответ сам.

...