Обсуждение: non-polling LISTEN

Поиск
Список
Период
Сортировка

non-polling LISTEN

От
Дата:
I would like to be able to "watch" a table and be informed when a row is updated.  I have seen the LISTEN/NOTIFY
option,but it appears to be a polling arrangement.  I will have 200 or so individual programs polling at 10 times a
second,which seems like a lot of overhead.  I would instead like to have each program perform something like a
select(),and just block until the table updates.  Is there are way to do this via the JDBC? (Our application is in
Java)

If this is only possible (if it is possible at all) via C or C++, I would be interested in knowing that as well.

Thank you.


Todd


Re: non-polling LISTEN

От
Kris Jurka
Дата:

On Fri, 19 Aug 2005 pgsql@toddb.mailshell.com wrote:

> I would like to be able to "watch" a table and be informed when a row is
> updated.  I have seen the LISTEN/NOTIFY option, but it appears to be a
> polling arrangement.  I will have 200 or so individual programs polling
> at 10 times a second, which seems like a lot of overhead.  I would
> instead like to have each program perform something like a select(), and
> just block until the table updates.  Is there are way to do this via the
> JDBC? (Our application is in Java)

The cvs version of the driver allows polling on the client side only that
doesn't require hitting the database.  So your code polls the JDBC driver,
but the driver doesn't need to actually poll the database.  A true
select() type solution would require moving to java.nio, but that is still
a ways away as we want to retain support for older JDKs.

http://archives.postgresql.org/pgsql-jdbc/2005-04/threads.php#00054

Kris Jurka