J'utilise différentes usines de connexion pour envoyer et recevoir des messages, ayant des problèmes avec des problèmes de validation partielle en cas de défaillance de livraison. jms:message-driven-channel-adapter
utilise le receiveConnectionFactory
pour recevoir les messages de la file d'attente. jms:outbound-channel-adapter
utilise le deliverConnectionFactory
pour envoyer les messages plusieurs aux files d'attente en aval. Nous avons seulement un JmsTransactionManager
qui utilise le receiveConnectionFactory
et le jms:outbound-channel-adapter
configuré avec session-transacted="true"
. En cas d'exception MQ sur une destination, la validation partielle se produit et la validation de la file d'échecs se produit. Je cherche à voir s'il me manque une configuration pour rejoindre les transactions afin que la validation partielle ne se produise jamais.Comment joindre les transactions Spring JMS à partir de deux fabriques de connexions différentes?
J'ai essayé avec une seule usine de connexion à la fois envoyer et recevoir (receiveConnectionFactory
) et la validation paritaire ne se passe pas, tout fonctionne comme prévu.
Merci @Artem pour la réponse rapide. Oui, en ce moment nous sommes connectés au même QManager pour recevoir et envoyer. Nous préparons la future implémentation de QManager différent pour l'envoi et la réception. Je vais essayer d'implémenter JtaTransactionManager ou ChainedTransactionManager et voir si cela résout le problème. – Selvakumar
Mise à jour - J'ai ajouté deux JmsTransactionManagers - un par fabrique de connexions et ChainedTransactionManager pour joindre les transactions. Tout fonctionne comme prévu, pas de commits partiels. Merci @artem pour avoir posté la solution. – Selvakumar