首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >监听器的Stomp.py返回消息

监听器的Stomp.py返回消息
EN

Stack Overflow用户
提问于 2012-02-17 21:12:13
回答 2查看 8.3K关注 0票数 4

将stomp.py (3.0.5)与python (2.6)和Apache ActiveMQ (5.5.1)一起使用。我已经让basic example正常工作了,但是现在我想将接收到的消息(在on_message()中)返回给MyListener类外部的一个变量。

我可以想象这是一个非常标准的任务,但我的一般python技能还不够好,无法弄清楚如何做到这一点。我在google上搜索了一个更高级的示例,并阅读了全局变量,但我似乎仍然无法将消息放入变量中,而只是将其打印到屏幕上。

任何帮助,非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 16:45:58

由于监听器将在接收器线程中调用,因此如果您希望在其他线程(例如主线程)中处理消息,则应进行线程切换。

线程切换的一个简单示例是使用具有锁定的共享变量,并在接收方线程接收到消息时更新该变量。而且,在另一个线程中读取该变量,但您需要使用适当的同步机制来确保不会覆盖该消息,也不会遇到死锁。

以下是通过锁定使用某些全局变量的示例代码。

代码语言:javascript
复制
rcvd_msg = None
lock = thread.Condition()

# executed in the main thread
with lock:
    while rcvd_msg == None:
        lock.wait()
    # read rcvd_msg
    rcvd_msg = None
    lock.notifyAll()

class Listener(ConnectionListener):      

    def on_message(self, headers, message):
        # executed in the receiver thread
        global rcvd_msg, lock
        with lock:
            while rcvd_msg != None:
                lock.wait()
            rcvd_msg = message
            lock.notifyAll()

希望这能有所帮助!!

票数 5
EN

Stack Overflow用户

发布于 2014-04-15 21:26:19

您所要做的就是对listener类稍作更改:

代码语言:javascript
复制
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的代码中:

代码语言:javascript
复制
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})

Stomp.py how to return message from listener -指向stackoverflow类似问题的链接

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9328863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档