python – Stomp.py从侦听器返回消息
发布时间:2020-12-20 11:23:42 所属栏目:Python 来源:网络整理
导读:使用带有 python(2.6)的stomp.py(3.0.5)和Apache ActiveMQ(5.5.1).我已经让 basic example工作没有任何问题,但现在我想将收到的消息(在on_message()中)返回到MyListener类之外的变量. 我可以想象这是一个非常标准的任务,但是我的一般python技能还不足以解决
使用带有
python(2.6)的stomp.py(3.0.5)和Apache ActiveMQ(5.5.1).我已经让
basic example工作没有任何问题,但现在我想将收到的消息(在on_message()中)返回到MyListener类之外的变量.
我可以想象这是一个非常标准的任务,但是我的一般python技能还不足以解决如何做到这一点.我已经在Google上搜索了一个更高级的示例并阅读了全局变量,但我仍然无法将消息转换为变量,而不仅仅是将其打印到屏幕上. 任何帮助,非常感谢! 解决方法
由于侦听器将在接收器线程中调用,因此如果要在其他线程(例如主线程)中处理消息,则应该执行线程切换.
线程切换的一个简单示例是使用带有锁定的共享变量,并在接收器线程接收到消息时更新该变量.并且,在另一个线程中读取该变量,但是您需要使用适当的同步机制来确保不覆盖该消息,并且不会遇到死锁. 下面是使用带锁定的全局变量的示例代码. 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() 希望有所帮助!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |