LISTEN后,PostgreSQL通知队列为空

时间:2019-02-19 06:02:13

标签: postgresql ipc postgresql-9.5

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

LISTEN mychannel;

我们可以NOTIFY条消息发送到该频道。

NOTIFY mychannel 'Hello';
  1. 这条NOTIFY消息保存在数据库中的某个位置。哪里?我可以使用表格中的选择查询来查看消息吗?

  2. 如果我NOTIFY 3或5条消息被保存在队列中。我使用编程语言运行LISTEN命令,处理了所有消息,并从队列中删除了消息。如果我的客户端崩溃了,所有消息都将丢失。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

恐怕您会误解LISTEN。它用于 active 会话之间的异步通信。邮件不会存储在任何地方。

如果要在应用程序的两个部分之间进行通信的持久性dara结构,则可能正在寻找队列

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

LISTEN / NOTIFY可以成为这种队列实现的一部分,从而使接收者不必定期轮询队列。