2011-01-04 22 views
13

Selamlar Bir tetikleyici veya bir dinleyici (ne olduğunu bilmiyorum) gibi bir şey yapmak istiyorum belirli bir veritabanı tablosunda dinleyecek ve bu tabloya eklenen her yeni kayıtla, bazı java kodları yapmak istiyorum Yeni bir kaydın eklendiğini algıladığını ve olası bir veriyi aldığını tespit ederse Bu işlemin nasıl gerçekleştirileceğine dair bir kılavuza ihtiyacım var? Spring-hazırda-PostgreSQLJava ile bir veritabanı dinleyicisi nasıl oluşturulur?

+0

Sanırım tüm yorumları okuduktan sonra kendi çözümümüzü uygulayacağım. JMS'yi her durumda kullanacağım, böylece bir istemci veritabanını JMS gönderimi yoluyla güncellediğinde, verilerin değiştiği tüm istemcilere bir JMS mesajı göndereceğim. Tetikleyicileri olduğu gibi bunu yapmanın tek garantili yolu gibi görünüyor Bir kabus ve Oylama korkunç bir çözümdür. – JPM

cevap

10

Bu LISTEN/NOTIFY için yaratıldı ne kullanıyorum

. Tek dezavantajı, herhangi bir bildirimin mevcut olup olmadığını görmek için veritabanını düzenli olarak sorgulayan bir çeşit arka plan iş parçacığına sahip olmanız gerekeceğidir.

Ayrıca bir başlangıç ​​noktası

+0

Veritabanını yoklamayın, istemcinizi yoklayın: http://jdbc.postgresql.org/documentation/publicapi/org/postgresql/PGConnection.html#getNotifications() –

+0

@AdamGent: Tabii ki sunucuyu yoksaydınız . İstemci (PGConnection) sunucudan "herhangi bir mesaj var mı?" Diye soracaktır. –

+0

Belki de yanlış wireshark okuyordum ama yemin ederim, şoförün onlara istediklerini bildiren bildirimleri alıyormuş gibi görünmesine yemin ederim. Postgres'in bazı asenkron destekleri eklediğini okudum ve bunun bazılarının olabileceğini düşündüm. –

1

Kayıt olaylarını algılamak için Hazırda Bekletme yapılandırmanıza bir Interceptor ekleyebilirsiniz.

İlgili konular