LISTEN之后PostgreSQL NOTIFY队列为空

问题描述 投票:0回答:1

我是PostgreSQL LISTEN / NOTIFY的新功能。在LISTEN命令之后,

LISTEN mychannel;

我们可以通过NOTIFY消息到频道。

NOTIFY mychannel 'Hello';
  1. 这个NOTIFY消息保存在数据库的某个地方。哪里?我可以使用表中的select查询来查看消息吗?
  2. 如果我NOTIFY 3或5消息,这些消息保存在队列中。我使用编程语言运行LISTEN命令,处理所有消息并从队列中删除消息。如果我的客户端崩溃,所有消息都将丢失。我怎么解决这个问题?
postgresql ipc postgresql-9.5
1个回答
1
投票

我担心你会误解LISTEN。它用于活动会话之间的异步通信。消息不会存储在任何地方。

如果您希望在应用程序的两个部分之间进行通信的持久数据结构,那么您可能正在寻找队列。

由于队列在关系数据库中很难实现,我建议您使用PostgreSQL现有的第三方实现之一。

LISTEN / NOTIFY可以是这种队列实现的一部分,使收件人无需定期轮询队列。

© www.soinside.com 2019 - 2024. All rights reserved.