2010-12-16 20 views
2

私はJMSを初めて利用しています。 JMSトランザクションがCommittedでもRollbackedでもない場合、メッセージはどうなりますか?JMSトランザクションがコミットもロールバックもされていない場合にメッセージが表示される

+0

何とかデッドレターキューにルーティングされる可能性がありますか?私の腸はおそらくちょうどメモリリークを引き起こすと言いますが。 –

+0

あなたはメッセージを送受信していますか? – maximdim

答えて

0

トランザクションのタイムアウト時間が経過すると、jmsトランザクションはロールバックされます。したがって、トランザクションは保留状態のままになりません。

1

正確な動作はブローカーによって異なります。私はWebSphere MQを専門に扱っていますので、それらの用語で説明します。あなたが使用しているブローカーの風味を知らせてくれたら、おそらく特定のブローカーに精通した人が応答します。

WMQの場合、制限要因はトランザクションログとアプリケーションの寿命です。未処理のトランザクションでアプリケーションが終了すると、ロールバックされます。それ以外の場合、トランザクションはログスペースが使い果たされるまでログに記録され、トランザクションがロールバックされ、アプリケーションはエラーの性質を示す理由コードを取得します。トランザクションログに書き込む他のアプリケーションがない場合、トランザクションは無期限に存続することができます。 QMgrがビジー状態の場合、コミットされていないトランザクションは、ログのエクステントとサイズに応じて数秒間しか持続しません。

WMQではメモリリークの影響がありません。メモリー、ハンドル、その他のリソースが制御不能になるのを防ぐコミットされていないメッセージの数には上限があります。

関連する問題