Immer wenn ich manuell listen aufrufe. Dann bekomme ich alle notifies nacheinander.
Genau, so ist das gedacht. Es gibt keinen "Event Listener" der automatisch aufgerufen wird.
Du musst letzendlich in einem Hintergrund-Thread alle x Sekunden das LISTEN aufrufen und dann entsprechend reagieren.
Schau mal in den Archiven der JDBC Mailing Liste. Da hat vor ein paar Wochen jemand eine Helper-Klasse veröffentlicht die den Umgang mit NOTIFY/LISTEN in Java/JDBC vereinfacht (und eben genau diesen Hintegrund-Thread implementiert).
Nachdem Java und C# nicht sooo weit auseinander sind, kannst Du das vielleicht als Grundlage verwenden.
Normalerweise sollte es reichen, vorab einmalig LISTEN aufzurufen, um zukünftig in dieser Verbindung über alle aufgetretenen Signale dieses Namens informiert zu werden.
Der mehrmalige Aufruf von LISTEN ist nicht notwendig.
Allerdings kann es sein, dass z. B. die Signale erst ausgewertet werden, wenn die nächste Aktivität auf der Verbindung zur Datenbank stattfindet. In psql ist das so.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Danke jetzt ist mir einiges klarer. Also ich muss auf jeden Fall mehrmals Listen aufrufen, sonst passiert bei mit gar nichts. Da ich das Ganze für Aktualisierungsprozesse einsetzen möchte, fehlen mir leider Parameter, die ich gerne übergeben möchte. Kennt ihr hierzu irgendwelche Lösungsansätze, um das Problem der fehlenden Parameter zu lösen?
Du musst nicht LISTEN mehrmals aufrufen, es genügt wahrscheinlich, irgendetwas auf dieser Datenbankverbindung zu machen, z. B. ein "SELECT 1;". Außerdem würde ich mal in die Dokumentation schauen, einige Programmiersprachen können das Event direkt durchreichen, wenn es auftritt. Andere Sprachen und Programme (wie z. B. psql) prüfen so etwas erst nach, wenn wieder etwas passiert). Das Event wird von der Datenbank jedenfalls schon dann auf die Verbindung gelegt, wenn es ausgelöst wird.
Das mit den fehlenden Parametern ist ein heikles Thema. Dazu gibt es derzeit lange Diskussionen auf der -hackers Mailingliste, da eine Neuimplementierung dieses Features ansteht. Dabei soll man dann auch Parameter mitgeben können. Derzeit ist das direkt nicht möglich, man behilft sich, indem man die entsprechenden Daten in eine Tabelle schreibt (das macht dann z. B. der Trigger).
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen