PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Powiadamianie o zmianach postgres w aplikacji java

Jakie mam inne rozwiązanie tego problemu?

Użyj LISTEN i NOTIFY aby poinformować aplikację, że coś się zmieniło.

Możesz wysłać NOTIFY z wyzwalacza, który rejestruje również zmiany w tabeli kolejki.

Będziesz potrzebować połączenia PgJDBC, które wysłało LISTEN dla wydarzeń, z których korzystasz. Musi odpytywać bazę danych, wysyłając okresowe puste zapytania ("" ), jeśli używasz SSL; jeśli nie używasz SSL, można tego uniknąć, korzystając z kontroli powiadomień asynchronicznych. Musisz rozpakować Connection obiekt z puli połączeń, aby móc rzutować podstawowe połączenie na PgConnection do korzystania z funkcji nasłuchiwania/powiadamiania. Zobacz pokrewną odpowiedź

Bit producent/konsument będzie trudniejszy. Aby mieć wielu jednoczesnych konsumentów odpornych na awarie w PostgreSQL, musisz użyć blokowania doradczego z pg_try_advisory_lock(...) . Jeśli nie potrzebujesz jednoczesnych konsumentów, to jest to łatwe, po prostu SELECT ... LIMIT 1 FOR UPDATE wiersz na raz.

Mam nadzieję, że 9.4 będzie zawierał łatwiejszą metodę pomijania zablokowanych wierszy za pomocą FOR UPDATE , ponieważ trwają prace nad tym rozwojem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsze praktyki replikacji PostgreSQL — część 1

  2. Jak pogrupować znaczniki czasu w wyspy (na podstawie arbitralnej luki)?

  3. Jak sprawdzić wersję PostgreSQL

  4. postgresql:INSERT INTO ... (WYBIERZ * ...)

  5. Zapytanie SQL, aby uzyskać wszystkie wartości, jakie może mieć wyliczenie