Datenbank-Trigger Und JMS
Kann ich einen trigger erstellen, zu senden eine Aufzeichnung message an JMS? Wenn ja, wie kann ich tun?
Vielen Dank im Voraus!
- kann man sehr gut nennen java-Funktion aus dem DB-trigger, wenn Sie im java-Funktion, Sie können schreiben sämtlicher java-code, den Sie wollen...
- Welche Datenbank-engine verwenden Sie? Verschiedene Datenbank-engines built-in-APIs für das.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde zusammenfassen Optionen wie folgt:
Datenbanken mit Unterstützung für JMS
Oracle ist die einzige Datenbank, die ich mir bewusst bin, dass unterstützt die JMS-nativ in der form von Oracle Advanced Queueing. Wenn Sie Ihre Nachricht-Empfänger ist nicht allzu scharf auf, dass die JMS-Implementierung, ist es meist möglich, zu finden irgendeine Art von messaging-Brücke, transformieren und weiterleiten von Nachrichten von einer JMS-Implementierung zu einer anderen. Zum Beispiel:
Datenbanken Java Unterstützt
Einige Datenbanken wie Oracle und DB2 haben eine eingebaute Java Virtual Machine und unterstützen das laden von Drittanbieter-Bibliotheken (Jars) und benutzerdefinierte Klassen, die aufgerufen werden können durch trigger-code. Je nach den Anforderungen Ihrer JMS-client, dies ein Problem sein wegen der Java-version unterstützt (wenn Sie brauchen, Java 5+, aber die DB unterstützt nur Java-3). Beachten Sie auch, dass threading in einigen der eingebetteten JVM ist nicht das, was Sie erwarten könnte es sein, aber man könnte auch erwarten, dass das senden von JMS-Nachrichten werden könnten, mehr zu vergeben als den Erhalt des gleichen.
Datenbanken Unterstützt Externe Aufrufe (aber nicht in Java)
Mehrere Datenbanken unterstützen verschiedene Mittel zur Auslösung asynchrone Ereignisse an die verbundenen clients, die wiederum nach vorne JMS-Nachrichten erstellt, aus der Nutzlast des Ereignisses:
Einige Datenbanken (alle vor und einschließlich SQLServer) erlauben das senden von SMTP-Nachrichten aus der Datenbank prozeduralen code (die aufgerufen werden können durch Trigger). Es ist zwar nicht von JMS, einen E-mail-listener könnte möglicherweise hören Sie für E-mail-Nachrichten (das könnte bequem eine JSON-oder XML-message-body) und leiten Sie diese Inhalt als JMS-Nachricht.
Einer grundlegenden Alternative von diesem ist-Datenbanken-Pakete, mit denen HTTP-posts zu rufen zu externen Quellen, wo man vielleicht ein servlet hören und Weiterleitung der übermittelten Inhalte als JMS-Nachricht.
Anderen Datenbanken wie Postgres-Unterstützung für nicht-java-Sprachen wie Perl, Python und Tcl, wo Sie vielleicht beschäftigen sich einige pfiffige Skripten zum senden einer Nachricht an eine externe message-Transformator, der wird sich freuen, da JMS. Active MQ (und somit auch seine message-bridge) unterstützt multi-Sprache JMS-client enthält Python und Perl (und viele andere).
Kleinsten Gemeinsamen Nenner
Kurz alle, die Ihre auslösen können, schreiben Sie ein Ereignis zu einer Tabelle und einem externen client kann eine Umfrage der Inhalt der Tabelle, auf der Suche nach neuen Daten und Weiterleitung von JMS-Nachrichten, wenn Sie Sie findet. Die JMS-Nachricht kann entweder den Inhalt, oder einfach nur anzugeben, dass der Inhalt vorhanden ist und was die PK ist, und die Verbraucher können kommen und Holen Sie es.
Dies ist eine Technik umfassend unterstützt Apache Camel die Adapter (technisch als Komponenten bezeichnet), die speziell für Abfragen von Datenbanken:
Veranstaltungen Lesen aus einer Datenbank eine Tabelle mit dem Kamel kann dann umgewandelt und weitergeleitet zu einer Vielzahl von Destinationen, darunter ein JMS server (in form einer JMS-Nachricht). Die Umsetzung dieses Kamel ist ein Recht geradlinig und gut dokumentiert, so ist dies nicht ein schlechter Weg zu gehen.
Ich hoffe, das war hilfreich.