3

この質問 (マルチスレッド JMS コード: CLIENT_ACKNOWLEDGE またはトランザクション セッション) を読みましたが、理解できませんでした。メッセージ コンシューマーにおけるこれら 2 つのメソッドの違いは何ですか:

  1. 接続は処理されません。セッションはCLIENT_ACKNOWLEDGEモードです。複数のメッセージを受け取り、次に 1 つのメッセージを受け取りますacknowledge()
  2. 接続は処理されます (ではありませんxa)。セッションはAUTO_ACKNOWLEDGEモードです。複数のメッセージを受信したら、commit().

これはメッセージ プロバイダーの動作に依存しますか?

4

2 に答える 2

2

たった1つの宛先からメッセージを受信する場合は、それほど違いはないと思います。CLIENT_ACKNOWLEDGEまたはTransactedセッションのいずれかを使用できます。

ただし、セッションで複数の宛先を使用する場合、たとえば、キュ​​ーからメッセージを受信し、それを処理して、同じセッション内の別のトピックにプロセス結果を公開する場合は、トランザクションセッションの方が適しています。したがって、メッセージの受信と公開はすべて1つのトランザクションで行われます。メッセージ処理の結果に基づいて、トランザクションはコミットまたはロールバックできます。

于 2012-07-06T14:18:12.027 に答える