2017-06-30 2 views
0

Dans JBOSS EAP6, un thread MDB à exécution longue écoute une file d'attente JMS. Il a reçu un message texte avec une clé de travail DB qu'il doit traiter (boucle). Au cours de son exécution, j'ai remarqué que les nouveaux threads engendraient de nouvelles instances MDB, conduisant à des incohérences. Je veux empêcher cela d'une manière programmatique ou d'une manière de configuration sans changement de performance. Par exemple, vérifiez dans le onMessage que le travail est en cours. Je ne peux pas changer le modèle de base de données.Les nouveaux threads MDB appellent onMessage alors que le thread précédent n'est pas terminé

Depuis que je cours dans une seule machine virtuelle, je suis sur le point (en dernier recours) d'utiliser un ensemble statique qui stocke la clé DB. (Je suis un peu sous la pression du temps pour résoudre ce problème).

+0

Une idée peut-être utiliser un haricot singleton où je pourrais acquérir un verrou pour la DB clé dans le message .. – sjaak

Répondre

0

Le problème a été causé par le fait que j'ai oublié de spécifier le délai d'expiration de la transaction. Par conséquent la valeur par défaut time-out semble botter

Le problème a été résolu en ajoutant le temps de transaction sur:.

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