2017-06-30 4 views
0

JBOSS EAP6では、JMSキューを待機しているMDBスレッドが長時間実行されています。それは処理する必要のあるDBキーを持つテキストメッセージを受信しました(ループ)。前のスレッドが完了していない間に、MDBの新しいスレッドがonMessageを呼び出しています

実行中に、新しいスレッドで新しいMDBインスタンスが生成され、矛盾が発生することに気付きました。私は、プログラム的なやり方で、あるいはパフォーマンスを変えることなく、それを防ぐ方法を望んでいます。したがって、例えばonMessageで作業が進行中であることを確認します。私はDBモデルを変更することはできません。

私は1つのVMで動作しているので、私はDBキーを格納する静的なSetを使用するのが最後です。 (私は少し時間をかけてこれを修正するプレッシャーの下にいる)。

+0

ひとつのアイデアは、私はDBのキーのロックをAQUIREできシングルトンBeanを使用している場合がありますメッセージに.. – sjaak

答えて

0

問題は、トランザクションのタイムアウトを指定していないという事実が原因です。したがって、デフォルトのタイムアウトがでキックするようだ

問題はトランザクション時間を追加することによって解決されました:。

@ActivationConfigProperty(propertyName = "transactionTimeout", propertyValue = "10800") 
関連する問題