Notez que je souhaite que plusieurs écouteurs de message traitent simultanément les messages successifs du sujet. De plus, j'aimerais que chaque écouteur de message fonctionne de manière transactionnelle de sorte qu'un échec de traitement dans un écouteur de message donné entraîne le maintien du message de cet écouteur sur le sujet.Comment puis-je gérer plusieurs messages simultanément à partir d'un sujet JMS (pas la file d'attente) avec java et spring 3.0?
Le ressort DefaultMessageListenerContainer semble prendre en charge la simultanéité pour les files d'attente JMS uniquement.
Ai-je besoin d'instancier plusieurs DefaultMessageListenerContainers?
Si le temps coule dans l'axe vertical:
ListenerA reads msg 1 ListenerB reads msg 2 ListenerC reads msg 3
ListenerA reads msg 4 ListenerB reads msg 5 ListenerC reads msg 6
ListenerA reads msg 7 ListenerB reads msg 8 ListenerC reads msg 9
ListenerA reads msg 10 ListenerB reads msg 11 ListenerC reads msg 12
...
MISE À JOUR:
Merci pour vos commentaires @ T.Rob et @skaffman.
Ce que je fini par faire est la création de multiples DefaultMessageListenerContainers
avec concurrency=1
et puis mettre logique dans l'auditeur de message de sorte que seul thread traiterait un identifiant de message donné.
Pourriez-vous clarifier? Quand je vois "plusieurs écouteurs de message pour gérer des messages successifs du sujet simultanément", je pense que cela signifie que vous ne voulez pas que les auditeurs obtiennent chacun une copie du même message, mais plutôt qu'ils se disputent les mêmes messages. Est-ce exact? –
Cela semble utile: http://bsnyderblog.blogspot.com/2010/05/tuning-jms-message-consumption-in.html – skaffman