2017-06-30 1 views
0

In JBOSS EAP6 habe ich eine lange laufende MDB-Thread hören eine JMS-Warteschlange. Es erhielt eine Textnachricht mit einem DB-Schlüssel der Arbeit, die es verarbeiten sollte (Schleife).MDB neue Threads aufrufen onMessage, während vorherige Thread nicht fertig

Während der Ausführung habe ich festgestellt, dass neue Threads neue MDB-Instanzen erzeugen, was zu Inkonsistenzen führt. Ich möchte das auf eine programmatische Art oder in einer Konfigurationsweise verhindern, ohne die Leistung zu ändern. Also, zum Beispiel in der onMessage überprüfen, dass die Arbeit läuft. Ich kann das DB-Modell nicht ändern.

Da ich in einer einzigen VM ausgeführt werde, bin ich am Rande (letzte Möglichkeit) mit einem statischen Set, das den DB-Schlüssel speichert. (Ich bin ein bisschen unter Zeitdruck, das zu beheben).

+0

Eine Idee könnte eine Singleton-Bohne verwenden, wo ich eine Sperre für die DB Key erwerben könnte in der Nachricht .. – sjaak

Antwort

0

Das Problem wurde durch die Tatsache verursacht, dass ich das Transaktions-Timeout vergessen habe. Daher scheint die Standard-Time-out zu treten

Das Problem, indem Sie die Transaktionszeit heraus gelöst wurde.

@ActivationConfigProperty(propertyName = "transactionTimeout", propertyValue = "10800") 
Verwandte Themen