使用带有python(2.6)的stomp.py(3.0.5)和Apache ActiveMQ(5.5.1).我有基本的例子没有任何问题,但现在我想将收到的消息(在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()
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!!
| 归档时间: |
|
| 查看次数: |
6045 次 |
| 最近记录: |