0

このチュートリアルを使用して JMS API を理解しようとしました。セッション オブジェクトの作成時に、2 つの引数を に渡しますcreateSession(argument1,argument2)

argument1 値はboolean値です。

指定すると、

true: トランザクション セッションです。

false: 非トランザクション セッションです。

私の質問は、トランザクションされたセッションとトランザクションされていないセッションの違いは何ですか。このために、このチュートリアルを読みました。よくわかりました。しかし、これら 2 種類のセッションが実際のケースで役立つ場所を知りたいと思っています。

簡単な例で説明できますか?

4

2 に答える 2

1

トランザクション セッションは、論理トランザクションが完了する前に複数のメッセージを受信する必要がある場合に便利です。

たとえば、結果をデータベースに永続化するには、3 つのメッセージを消費する必要があります。この場合、データベースへの更新を完了した後、キュー セッションでコミットして、1 回で 3 つのメッセージを確認します。

それ以外の場合、2 つのメッセージを読み取った後にプログラムが終了すると、これら 2 つのメッセージは失われます ( を使用した場合AUTO_ACKNOWLEDGE)。

したがって、トランザクションと非トランザクションの違いは、承認するオブジェクトです。最初のケースではセッションであり、もう 1 つは個別のメッセージです。

于 2013-09-09T13:02:45.617 に答える
0

トランザクション セッションを使用すると、複数のことを行うことができ、それらがすべて一緒に発生するか、発生しないようにすることができます。典型的な例として、あるメッセージを受信して​​別のメッセージを送信することがあります。JMS は信頼性の高いトランスポートと見なされるため、2 番目のメッセージが確実に送信されるようにしたいとします。これらのことを非トランザクションで行い、処理アプリケーションが受信後、送信前に失敗すると、情報が失われます。この問題を解決するには、トランザクション セッションを利用します。これにより、1 つのメッセージを受信し、2 番目のメッセージを送信してから、Session.commit を呼び出して両方を同時に発生させることができます。

于 2013-09-09T13:00:13.827 に答える