PostgreSQL NOTIFY 队列在 LISTEN 后为空
PostgreSQL NOTIFY queue empty after LISTEN
我是 PostgreSQL LISTEN
/NOTIFY
功能的新手。 LISTEN
命令后,
LISTEN mychannel;
我们可以NOTIFY
向频道发消息。
NOTIFY mychannel 'Hello';
此 NOTIFY
消息保存在数据库中的某处。在哪里?我可以使用来自 table 的 select 查询查看消息吗?
如果我 NOTIFY
3 或 5 条消息,这些消息将保存在队列中。我使用编程语言 运行 LISTEN
命令,处理所有消息并从队列中删除消息。如果我的客户端崩溃,所有消息都将丢失。我该如何解决这个问题?
恐怕你误会了LISTEN
。它用于 active 会话之间的异步通信。消息未存储在任何地方。
如果您想要一个持久的 dara 结构用于应用程序的两个部分之间的通信,您可能正在寻找一个 队列。
众所周知,队列很难在关系数据库中实现,我建议您使用 PostgreSQL 的现有第三方实现之一。
LISTEN
/ NOTIFY
可以成为此类队列实现的一部分,从而使收件人无需定期轮询队列。
我是 PostgreSQL LISTEN
/NOTIFY
功能的新手。 LISTEN
命令后,
LISTEN mychannel;
我们可以NOTIFY
向频道发消息。
NOTIFY mychannel 'Hello';
此
NOTIFY
消息保存在数据库中的某处。在哪里?我可以使用来自 table 的 select 查询查看消息吗?如果我
NOTIFY
3 或 5 条消息,这些消息将保存在队列中。我使用编程语言 运行LISTEN
命令,处理所有消息并从队列中删除消息。如果我的客户端崩溃,所有消息都将丢失。我该如何解决这个问题?
恐怕你误会了LISTEN
。它用于 active 会话之间的异步通信。消息未存储在任何地方。
如果您想要一个持久的 dara 结构用于应用程序的两个部分之间的通信,您可能正在寻找一个 队列。
众所周知,队列很难在关系数据库中实现,我建议您使用 PostgreSQL 的现有第三方实现之一。
LISTEN
/ NOTIFY
可以成为此类队列实现的一部分,从而使收件人无需定期轮询队列。