Camel APIに同梱されている組み込み永続ソリューションはありますか?デッドレターメッセージを保存したい。DBまたはJMSキューを介して実行できますが、クライアントに出荷する際は避けたいと思います。
HawtDBについては「CamelInAction」で読みました。しかし、それはAggregatorEIPと緊密に結合されているようです。
後で、すべてのデッドレターメッセージに関するレポートを作成してクライアントに表示したいと思います。
2266 次
1 に答える
2
任意の永続化コンポーネントを使用して、デッド レター メッセージを保存できます ( Hibernate、JPA、JDBC、DB4Oなど)。ほとんどの持続性コンポーネントの場合、メッセージ自体は保存しませんが、そこから選択した (メタ) データを保存します (注目すべき例外は、DB4O コンポーネントを使用する場合です)。
たとえば、Hibernate エンティティをメッセージで送信する場合は、Hibernate コンポーネントを使用できます。
from("seda:deadMessageStore").
setBody().groovy("new DeadMessageLog(request.headers, request.body) ").
to("hibernate:com.foo.DeadMessageLog");
errorHandler(deadLetterChannel("seda:deadMessageStore"));
デッド レター キューに送信するクラスの種類を予測できない場合は、DB4O コンポーネントの使用を検討してください。DB4O は、(Hibernate や JPA の場合のように、明示的なマッピングなしで) 任意の Java オブジェクトをキューに格納できるため、この点で非常に柔軟です。
// store any Java object without transformations
errorHandler(deadLetterChannel("db4o:java.lang.Object"))
また、組み込み DB40 コンテナーの作成は非常に簡単です。
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), DB4OFILENAME);
于 2012-05-25T12:48:24.710 に答える