0

我正在尝试从消费者那里获取消息并将其发送到队列。为此,我正在使用Stomp.py文章和帖子后,我编写了以下代码:

import ssl
import stomp

stompurl = "xxxxxxxx.mq.us-west-2.amazonaws.com"
stompuser = "stomuser"
stomppass = "password"


class MyListener(stomp.ConnectionListener):
    msg_list = []

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

    def on_error(self, frame):
        self.msg_list.append('(ERROR) ' + frame.body)

    def on_message(self, frame):
        self.msg_list.append(frame.body)


conn = stomp.Connection(host_and_ports=[(stompurl, "61614")], auto_decode=True)
conn.set_ssl(for_hosts=[(stompurl, "61614")], ssl_version=ssl.PROTOCOL_TLS)
lst = MyListener()
listener = conn.set_listener('', lst)
conn.connect(stompuser, stomppass, wait=True)
# conn.send(body='Test message', destination='Test_QUEUE')
conn.subscribe('Test_QUEUE', '102')
print(listener.message_list)
import time; time.sleep(2)
messages = lst.msg_list
# conn.disconnect()
print(messages)

使用此代码,我可以向其发送消息,Test_QUEUE但无法从消费者那里获取所有消息。如何从消费者那里提取所有消息并发布到队列进行处理。

4

1 回答 1

0

我不是 Python + STOMP 专家,但在您创建异步(即非阻塞)消息侦听器时,我使用的所有其他语言都必须阻止您的应用程序退出。您time.sleep(2)在那里有一个,但实际上是否有足够的时间从队列中获取所有消息?

看起来您的应用程序将退出,print(messages)这意味着如果您在此期间没有收到所有消息,time.sleep(2)那么您的应用程序将简单地终止。

于 2021-10-05T13:51:08.817 回答