Stomp.py如何从侦听器返回消息

时间:2014-04-15 07:34:04

标签: python django stomp

我已经阅读过这个话题:Stomp.py return message from listener

但是我仍然不知道这是如何工作的,以及为什么没有办法直接从stomp对象或监听器中检索消息?

如果我可以通过send方法发送消息,并且如果我可以接收带有on_message监听器方法的消息,为什么我不能将该消息返回到我的原始函数,所以我可以将它返回到前端?

所以,如果我有:

class MyListener(object):
    def on_error(self, headers, message):
        print '>>> ' + message
    def on_message(self, headers, message):
        print '>>> ' + message

如何从on_message方法返回消息?

或者我可以在conn.subscribe(...)??

之后以某种方式这样做

1 个答案:

答案 0 :(得分:3)

好的,我自己找到了一种方法。您所要做的就是对听众类略有改动:

class MyListener(object):
    msg_list = []

    def __init__(self):
        self.msg_list = []

    def on_error(self, headers, message):
        self.msg_list.append('(ERROR) ' + message)

    def on_message(self, headers, message):
        self.msg_list.append(message)

在代码中,你使用stomp.py:

conn = stomp.Connection()
lst = MyListener()
conn.set_listener('', lst)
conn.start()
conn.connect()
conn.subscribe(destination='/queue/test', id=1, ack='auto')
time.sleep(2)
messages = lst.msg_list
conn.disconnect()
return render(request, 'template.html', {'messages': messages})