han*_*ank 5 postgresql postgresql-9.2
我正在努力使用 PostgreSQL LISTEN - NOTIFY 机制。我打开两个控制台并使用 psql 客户端连接到我的数据库:
psql -U postgres test_db
Run Code Online (Sandbox Code Playgroud)
在第一个控制台中,我订阅了一些通知:
test_db=# listen event;
LISTEN
Run Code Online (Sandbox Code Playgroud)
在第二个控制台中,我尝试发送通知:
test_db=# notify event;
NOTIFY
Run Code Online (Sandbox Code Playgroud)
第一个控制台没有任何反应。但是,如果我从控制台 1 发送通知,我会收到它,并且还会从控制台 2 收到所有以前的通知。
我在 CentOS 6.5 x64 下使用 PostgreSQL 9.2.1。
这是一个psql
问题。 psql
正在等待您在其命令行上输入内容。它只在有理由联系服务器时检查来自服务器的通知,而您没有给它一个理由。
他们可以以不同的方式实现它,以便它使用select
循环来等待键盘或服务器,以先变得有趣的为准。但这会使事情变得更加复杂,而且它不是这样做的。
这与如果您关闭服务器的原因相同,psql
直到您尝试做一些尝试与服务器通信的事情时才会注意到。
请注意,除 之外的客户端/库也会存在相同的问题psql
,并且不同的库以不同的方式解决(或无法解决)它。
归档时间: |
|
查看次数: |
2494 次 |
最近记录: |