Followed the guidance as mentioned in Spring Integration: Persistent and transactional QueueChannel and implemented the Jdbc ChannelMessageStore
. Got it to working except for the below,
Poller
should pick the failed messages for retry. Failed messages are picked only after a restartWell, with transaction is does that by default: the failed message is not deleted from DB and the next poll should pick it up. I'd be glad to investigate if that is otherwise, but I probably need a simple sample from you. There is no way to have retry attempts on those messages since we work in transaction and therefore rolled back message is just remained in DB as it was before transaction: we cannot modify it. There is a maxAttempts
option on a DelayHandler
, but that's fully different story.