sql >> Base de Datos >  >> RDS >> PostgreSQL

Notificación de cambios de postgres a la aplicación Java

¿Qué otra solución tengo para este problema?

Usa LISTEN y NOTIFY para decirle a su aplicación que las cosas han cambiado.

Puedes enviar el NOTIFY desde un disparador que también registra cambios en una tabla de cola.

Necesitará una conexión PgJDBC que haya enviado un LISTEN para los eventos que está utilizando. Debe sondear la base de datos enviando consultas periódicas vacías ("" ) si está utilizando SSL; si no está utilizando SSL, esto se puede evitar mediante el uso de las comprobaciones de notificación asíncronas. Deberá desenvolver la Connection objeto de su grupo de conexiones para poder convertir la conexión subyacente a un PgConnection para usar escuchar / notificar con. Ver respuesta relacionada

La parte productor/consumidor será más difícil. Para tener varios consumidores simultáneos a prueba de fallas en PostgreSQL, debe usar el bloqueo de aviso con pg_try_advisory_lock(...) . Si no necesita consumidores simultáneos, entonces es fácil, simplemente SELECT ... LIMIT 1 FOR UPDATE una fila a la vez.

Con suerte, 9.4 incluirá un método más fácil para omitir filas bloqueadas con FOR UPDATE , ya que hay trabajo en desarrollo para ello.