历史版本。 PostgreSQL 6.3 已结束支持。 请参阅 当前版本手册.
41.5. 异步通知
Postgres 通过
LISTEN 和
NOTIFY
命令支持异步通知。后端用
LISTEN
命令注册它对某个特定关系的兴趣。当另一个后端执行带该关系名的
NOTIFY
命令时,所有监听该关系的后端都会被异步通知。通知者不会向监听者传递任何附加信息。因此,通常需要通信的任何实际数据都通过该关系传递。每当所连接的后端收到异步通知时,libpq
应用都会得到通知。但后端到前端的通信并不是异步的。通知随其他查询结果捎带而来。因此,应用必须提交查询(哪怕是空查询)才能收到后端通知。实际上,libpq
应用必须轮询后端,看是否有待处理的通知信息。查询执行之后,前端可以调用
PQNotifies 查看后端是否有可用的通知数据。
PQNotifies从后端发来的尚未处理的通知列表中返回通知。如果后端没有待处理的通知则返回 NULL。PQNotifies 的行为类似弹出栈。一条通知被 PQnotifies 返回后即视为已处理,并会从通知列表中移除。PGnotify* PQNotifies(PGconn *conn);
第二个示例程序演示了异步通知的使用。