sql >> Databasteknik >  >> RDS >> PostgreSQL

Meddela postgres ändringar i java-applikationen

Vilken annan lösning har jag för det här problemet?

Använd LISTEN och NOTIFY för att berätta för din app att saker och ting har förändrats.

Du kan skicka NOTIFY från en utlösare som också registrerar ändringar i en kötabell.

Du behöver en PgJDBC-anslutning som har skickat en LISTEN för händelsen/evenemangen du använder. Den måste polla databasen genom att skicka periodiska tomma frågor ("" ) om du använder SSL; om du inte använder SSL kan detta undvikas genom att använda kontrollerna av asynkrona meddelanden. Du måste packa upp Connection objekt från din anslutningspool för att kunna casta den underliggande anslutningen till en PgConnection att använda lyssna/notifiera med. Se relaterat svar

Producent/konsumentbiten blir svårare. För att ha flera kraschsäkra samtidiga konsumenter i PostgreSQL måste du använda rådgivande låsning med pg_try_advisory_lock(...) . Om du inte behöver samtidiga konsumenter är det enkelt, du bara SELECT ... LIMIT 1 FOR UPDATE en rad i taget.

Förhoppningsvis kommer 9.4 att innehålla en enklare metod för att hoppa över låsta rader med FOR UPDATE , eftersom det finns arbete under utveckling för det.



  1. Vilket är det bästa sättet att undvika tecken som inte är formaterade i Oracles to_char?

  2. Skapa lagrade procedurer med hjälp av Entity Framework Code först?

  3. @GeneratedValue polymorf abstrakt superklass över MySQL

  4. Hur man ändrar ett databasnamn i SQL Server med T-SQL