Обратите внимание, что я хотел бы, чтобы несколько прослушивателей сообщений обрабатывали последовательные сообщения из темы одновременно. Кроме того, я хотел бы, чтобы каждый прослушиватель сообщений работал транзакционно, чтобы сбой обработки в данном слушателе сообщения привел к тому, что сообщение слушателя оставалось в теме.
spring DefaultMessageListenerContainer поддерживает concurrency только для очередей JMS.
Мне нужно создать несколько экземпляров DefaultMessageListenerContainers?
Если время течет вниз по вертикальной оси:
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
...
UPDATE:
Спасибо за ваши отзывы @T.Rob и @skaffman.
В результате я создал несколько DefaultMessageListenerContainers
с concurrency=1
, а затем поместил логику в прослушиватель сообщений так, чтобы только один поток обрабатывал данный идентификатор сообщения.