salut
une question d'ordre général
j'ai une appli constitué de deux modules que nous appellerons front et back.
Le front reçoit des objets, exécute un ensemble de traitements, le stocke en base, envoie un message JMS vers le back et commit sa transaction XA.
Le back scan les queues JMS le concernant et récupère des identifiants d'objets dans le message. Il tente un load de l'objet et c'est là qu'il y a problème car il arrive que le back tente de charger un objet que le front n'a pas encore commité.
j'ai essayé plusieurs solution qui ne me conviennent pas :
- une transaction externe dans le front pour créer l'objet dans la base de données suivi d'un load dans le front avec un lock. Le back reçoit le message et tente un load lock mais il est mis en attente le temps que le front commit sa transaction. Le problème de cette solution c'est que les verrous en bdd augmentent et je me retrouve toujours avec un "fond de roulement" de messages verrouillés.
pour faire simple je souhaiterais que le back ne tente un load que lorsque le front a terminer sa transaction et pas avant. Mais je vois pas comment le faire simplement.
merci
Partager