2011-07-18 13 views
3

CoundレコードメッセージをJMSに送信するためのトリガーを作成しますか?はいの場合、どうすればいいですか? ありがとうございます!データベースのトリガーとJMS

+0

どのデータベースエンジンを使用していますか?異なるデータベースエンジンには、このためのAPIが組み込まれている場合があります。 –

+0

@anhdv:あなたは非常によくあなたがしたいすべてのJavaコードを記述することができますあなたはJava関数では、DBのトリガーからJava関数を呼び出すことができます... – ag112

答えて

10

次のように私はあなたのオプションを要約します:JMS

オラクルのサポート

データベースを、私はそれがOracle Advanced Queueingの形でネイティブにJMSをサポートする認識しています唯一のデータベースです。メッセージ受信者がそのJMS実装にあまり熱心でない場合は、通常、あるJMS実装から別の実装にメッセージを変換して転送するメッセージングブリッジを見つけることができます。たとえば:

データベースは、JavaをサポートするようにOracleDB2など

いくつかのデータベースは、Java仮想マシンで構築し、サードパーティのロードをサポートしていますライブラリ(Jars)、およびトリガコードによって呼び出すことができるカスタムクラスがあります。 JMSクライアントの要件に応じて、これはJavaのバージョンがサポートされているために問題になります(Java 5+が必要な場合、DBはJava 3のみをサポートします)。また、これらの組み込みJVMの一部のスレッディングはnot what you might expect it to beですが、JMSメッセージを送信する方が、JMSメッセージを受信する方がJMSメッセージの方が受け入れられる可能性が高くなることがあります。外部呼び出しをサポート

データベース(ただし、Javaで)

いくつかのデータベースは、イベントのペイロードから構築することができます順番に前方JMSメッセージ接続されたクライアントに出非同期イベントをトリガの異なる手段をサポートしています。

データベース(上記のすべてで、SQLServerを含む)によっては、データベースの手続き型コード(トリガーによって呼び出すことができる)からSMTPメッセージを送信することができます。それはJMSではありませんが、メールリスナーは(おそらくJSONまたはXMLメッセージ本文を持つ)メールメッセージをリッスンし、この内容をJMSメッセージとして転送する可能性があります。

これは、HTTPポストが外部ソースに呼び出すことができるデータベースパッケージです。このソースでは、サーブレットがJMSメッセージとして受信したコンテンツをリッスンして転送する可能性があります。

その他のデータベースはPerl,PythonTclなどの非Java言語をサポートしています。ここでは、JMSとして転送する外部メッセージトランスフォーマーにメッセージを送信するための巧妙なスクリプトを使用する場合があります。アクティブMQ(したがってそのメッセージブリッジ)は、PythonおよびPerl(およびmany others)を含む多言語JMSクライアントをサポートします。

最小公分母すべてのことの

ショート、あなたのトリガは、テーブルにイベントを書き込むことができ、外部クライアントは、テーブルの内容をポーリングすることができ、新たなデータを探しているとそれが見つけたときにJMSメッセージを転送しますそれ。 JMSメッセージには、コンテンツが含まれているか、コンテンツが存在し、そのPKが何であるかを示すだけで、消費者がアクセスして取得することができます。

これは、具体的にポーリングデータベースの(技術的にコンポーネントと呼ばれる)アダプタを有する広くApache Camelでサポートされている技術である。

Camelがデータベーステーブルから読み取ったイベントは、JMS(JMSメッセージの形式)など、さまざまな宛先に変換してルーティングできます。このCamelを実装することは、かなり単純であり、文書化されているので、これは悪い方法ではありません。

これは役に立ちましたと思います。

+0

非常にあなたに感謝! –

+3

喜び。受け入れられた回答をマークしたいですか? – Nicholas

+0

@NicholasはネイティブMYSQLをサポートします。トリガーを使用してJavaプログラムを呼び出します。 – pavan