Voilà j'utilise JMS avec l'implémentation d'Apache : ActiveMQ.
Pour mon application d'entreprise; je souhaite mettre en place un principe de requete/réponse entre deux classes .
Le principe est simple :
une classe requester envoie un message JMS vers une queue de destination puis reste en écoute sur une autre queue de réponse en mode synchrone (bloquée jusqu'à réception de la réponse )
une classe replier est en écoute sur la queue de requete et à chaque message arrivé elle renvoie une réponse sur la queue de réponse..
Le requester reconnait que la réponse reçue le concerne en utilisant l'attribut correlationID de l'objet Message.
Plus de détail sur ce site : http://www.enterpriseintegrationpatt...msExample.html
Le problème c'est que je souhaite que le requester lise tous les messages l'un après l'autre et ne sorte de la queue que le message qui le concerne. Pour cela, la seule chose que j'ai trouvé c'est de jouer sur l'attribut acknowledge mode de la session mais j'ai encore un soucis :
- si je mets auto-acknowledge : chaque message lu par le requester est sorti de la queue même s'il ne le concerne pas . ainsi ce message est perdu pour ces vrais propriétaires ( les autres requesters )
- si je met CLIENT.acknowledge : un message lu n'est sorti de la queue que si l'application l'acquitte manuellement. mais dès que je fais msg.acknowledge() tous les messages sont sortis pas seulement celui acquitté.
Quelqu'un peut il m'aider sur ce problème assez complexe ....??
Partager