As a developer, I would like to be able to configure which exceptions thrown by a module should be retryable within the RabbitMessageBus.
As usual, these should be configurable at the bus and/or stream deployment property level.
Also consider disabling retry for kryo deserialization problems.
We are running Spring XD with RabbitMQ transport and we'd like to have a way to stop retries in certain situations. In Spring XD 1.2.0.RC1 docs, in chapter about RabbitMQ transport, in "A Note About Retry" section, it's written:
Message deliveries failing with a MessageConversionException (perhaps when using a custom converterClassName) are never retried; the assumption being that if a message could not be converted on the first attempt, subsequent attempts will also fail.
Following is unclear:
- Are we speaking about org.springframework.messaging.converter.MessageConversionException or org.springframework.amqp.support.converter.MessageConversionException? Based on
XD-1597and AMQP-390it's the latter.
- Only org.springframework.messaging.converter.MessageConversionException is available for custom module developers. Attempting to throw org.springframework.amqp.support.converter.MessageConversionException which is provided by $XD_HOME/lib/messagebus/rabbit/spring-amqp-1.4.5.RELEASE.jar results in java.lang.ClassNotFoundException even after Spring XD is configured to use rabbit transport.
- Throwing org.springframework.messaging.converter.MessageConversionException from custom processor module written with Spring Integration's transformer or service-activator doesn't stop retries.