2011-12-21 10 views
1

私は、EJB上の既存のインテグレーションシステムビルドの一部を置き換えることができる、小さな概念証明のCamelベースのアプリケーション(FuseESB上で実行中)を構築しようとしています。Apache Camel - JDBCストアドプロシージャとトランザクション処理に関する疑問

  1. JMSテキスト・メッセージが
  2. に来て、私はメッセージに基づいて、データベースの一連の操作を実行する必要があります。 は今、私は、Apacheラクダと、次のシナリオを処理するための最良の方法を把握しようとしています内容、主に格納されている先行/機能を呼び出す
  3. 私は返信メッセージを作成して特定のjmsキューに送信する必要があります。
  4. エラー/例外が発生した場合は、デッドレターチャネル処理メカニズムを使用したいと思います。

キャメルのSQLコンポーネント(私はJDBCコンポーネントをトランザクションクライアントにすることはできないことを理解しています)を使用する方法は、ラクダの簡単なラクラルート、処理エラー、例外を簡単に作成できます。私のdbはすべて単一のトランザクションの一部として呼び出します。私がネット上で見つけたことからCamel SQLコンポーネントはストアドプロシージャを実行するために使用できません - それは本当ですか?もしそうなら、私はjdbc呼び出しを行うためにプロセッサーか単純なpojoクラスを使うべきですか? pojo型やプロセッサ型を使用する場合のトランザクションはどうですか?このようなユースケースをどのように処理するかを記述するリソースへのポインタを高く評価します。

答えて

1

複数の呼び出しを行い、ストアドプロシージャを使用したいので、JDBCのやりとりを行うためにJava Beanを使用することをお勧めします。時にはJavaコードが簡単です。

たとえば、Spring JdbcTemplateはJDK JDBC APIよりも優れた抽象性を持ち、ストアドプロシージャの呼び出しをかなり簡単にします。

代わりに、MyBatisはストアドプロシージャの呼び出しもサポートしています。 http://loianegroner.com/2011/03/ibatis-mybatis-working-with-stored-procedures/

また、ラクダ - マイバティス成分もある。

+0

ありがとうクラウス、ルート全体のトランザクションについては、いくつかの豆の中で私のロジックを持っていると言うことができます。例外は、それらのいずれかで例外が発生した場合、すべてのルート)ロールバックできますか? – Kris

+0

次に、TXマネージャをセットアップして、JDBCコールを調整する必要があります。たとえば、通常、そこからデータソース/ jdbc接続を取得する場合です。あなたがSpring TXマネージャーを使用するならば、Camelの経路を設定して、CamelがTXで経路指定を行います。最後にコミット/ロールバックを行います。豆のTX APIを使ってdatasource/jdbc接続を調べて、同じTXに参加できるようにしてください。 –

関連する問題