Tenga en cuenta que me gustaría que varios oyentes de mensajes manejen mensajes sucesivos del tema al mismo tiempo. Además, me gustaría que cada detector de mensajes funcione de forma transaccional, de modo que una falla de procesamiento en un oyente de mensajes dado resulte en que el mensaje del oyente permanezca sobre el tema.¿Cómo puedo manejar múltiples mensajes al mismo tiempo desde un tema JMS (no en cola) con Java y Spring 3.0?
El muelle DefaultMessageListenerContainer parece admitir la concurrencia solo para las colas JMS.
¿Necesito crear una instancia de varios DefaultMessageListenerContainers?
Si el tiempo fluye hacia abajo el eje 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
...
ACTUALIZACIÓN:
Gracias por su regeneración @ T.Rob y @skaffman.
Lo que terminé haciendo es crear múltiples DefaultMessageListenerContainers
con concurrency=1
y luego poner la lógica en la escucha de mensajes de modo que sólo un hilo procesaría un mensaje identificador dado.
¿Podría aclarar? Cuando veo "varios oyentes de mensajes que manejan mensajes sucesivos del tema al mismo tiempo", creo que significa que no desea que los oyentes obtengan una copia del mismo mensaje, sino que compitan entre sí por mensajes sobre el mismo tema. ¿Es eso correcto? –
Esto parece útil: http://bsnyderblog.blogspot.com/2010/05/tuning-jms-message-consumption-in.html – skaffman