【问题标题】:Stomp.py how to return message from listenerStomp.py 如何从监听器返回消息
【发布时间】:2014-04-15 07:34:03
【问题描述】:

我已经读过这个话题: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(...) 之后以某种方式做到这一点吗??

【问题讨论】:

  • 您应该发布您的解决方案作为答案。

标签: python django stomp


【解决方案1】:

好的,我自己找到了方法。您所要做的就是稍微改变一下监听器类:

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})

【讨论】:

  • 你从哪里得到'/queue/test'?
  • 这种方法是线程安全的吗?考虑当主程序访问 msg_list 实例变量时有一条消息进入侦听器。有关线程切换,请参阅 this answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 2013-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多