Hum... I finally succeed in having a correct amq redelivery. And the problem was seemingly due to the logs of my previous post.
I found a post speaking of CACHE_CONSUMER and by adding the fowwing property to my jmscomponent <property name="cacheLevelName" value="CACHE_CONSUMER" /> i finally had the expected behaviour (and by the way the end of the infinite remove sub/add sub) :-)
I'm going now to see what exactly does this option.
If you are consuming messages and using transactions (transacted=true) then the default settings for cache level can impact performance.
If you are using XA transactions then you cannot cache as it can cause the XA transaction not to work properly.
If you are not using XA, then you should consider caching as it speedup performance, such as setting cacheLevelName=CACHE_CONSUMER.
Through Camel 2.7.x, the default setting for cacheLevelName is CACHE_CONSUMER. You will need to explicitly set cacheLevelName=CACHE_NONE.
In Camel 2.8 onwards, the default setting for cacheLevelName is CACHE_AUTO. This default auto detects the mode and sets the cache level accordingly to:
CACHE_CONSUMER = if transacted=false
CACHE_NONE = if transacted=true
So you can say the default setting is conservative. Consider using cacheLevelName=CACHE_CONSUMER if you are using non-XA transactions.
This explains why 2.7.x is different from 2.8 onwards.