Notificación Asíncrona

Postgres soporta notificación asíncrona a través de los comandos LISTEN y NOTIFY. Un servidor registra su interes en un semáforo particular con el comando LISTEN. Todos los servidores que están escuchando un semáforo particular identificado por su nombre recibirán una notificación asíncrona cuando otro servidor ejecute un NOTIFY para ese nombre. No se pasa ninguna otra información desde el servidor que notifica al servidor que escucha. Por ello, típicamente, cualquier dato actual que se necesite comunicar se transfiere a través de la relación.

Nota

En el pasado, la documentación tenía asociados los nombres utilizados para las notificaciones asíncronas con relaciones o clases. Sin embargo, no hay de hecho unión directa de los dos conceptos en la implementación, y los semáforos identificados con un nombre de hecho no necesitan tener una relación correspondiente previamente definida.

Las aplicaciones con libpq++ son notificadas cada vez que un servidor al que están conectadas recibe una notificación asíncrona. Sin embargo la comunicación entre el servidor y la aplicación cliente no es asíncrona. La aplicación con libpq++ debe llamar al servidor para ver si hay información de alguna notificación pendiente. Tras la ejecución de una consulta, una aplicación cliente puede llamar a PgDatabase::Notifies para ver si en ese momento se encuentra pendiente algún dato de notificación desde el servidor. PgDatabase::Notifies devuelve la notificación de una lista de notificaciones pendientes de manipular desde el servidor. La función devuelve NULL si no hay notificaciones pendientes en el servidor. PgDatabase::Notifies se comporta como el reparto de una pila. Una vez que PgDatabase::Notifies ha devuelto la notificación, esta se considera manipulada y se elimina de la lista de

El segundo programa de muestra da un ejemplo del uso de notificaciones asíncronas.