保留消息,直到使用Python+Stomp进行订阅

2024-09-28 16:53:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在编写两个脚本,使用stomp客户机库订阅消息服务器写入.py写入数据和阅读.py以获取数据。在

如果我开始阅读.py先运行写入.py写入.py正确接收消息。在

但是,如果我运行写入.py先运行阅读.py阅读.py不会检索以前发送到服务器的任何邮件。在

以下是脚本的相关部分。在

如何实现写入.py将保留到阅读.py订阅并检索它们?在

写入.py

def writeMQ(msg):
    queue = '/topic/test'
    conn = stomp.Connection(host_and_ports=[(MQ_SERVER, MQ_PORT)])
    try:
        conn.start()
        conn.connect(MQ_USER, MQ_PASSWD, wait=True)
        conn.send(body=msg, destination=queue, persistent=True)
    except:
        traceback.print_exc()
    finally:
        conn.disconnect()

    return

阅读.py

^{pr2}$

Tags: 数据py服务器脚本true消息客户queue
1条回答
网友
1楼 · 发布于 2024-09-28 16:53:56

被发送到的信息是一个问题。在

Apollo Documentation描述了主题和队列之间的区别,如下所示:

Queues hold on to unconsumed messages even when there are no subscriptions attached, while a topic will drop messages when there are no connected subscriptions.

因此,当阅读.py首先启动并侦听,主题识别订阅并转发消息。但当写入.py首先启动消息,因为没有订阅的客户端。在

所以可以使用队列而不是主题。如果服务器能够创建静默队列,只需设置

queue = '/queue/test' .

我不知道使用的是哪个版本的stomp,但找不到参数

^{pr2}$

无论如何,持久化并不是正确的方法,因为它仍然不允许为以后的连接简单地保留消息,而是在服务器发生故障时保存消息。在

你可以使用

retain:set

改为主题消息的标题。在

相关问题 更多 >