An AbstractRabbitListenerContainerFactoryConfigurer and its sub-classes require RabbitProperties to have been set but the MessageConverter and List<RabbitRetryTemplateCustomizer> are both optional and can be left unset. All three are configured via setter methods making it hard to distinguish between things that are required and things that are optional. It'd be good if RabbitProperties was a constructor parameter.

To do this in a backwards-compatible manner we'll have to keep the default constructors and add on that takes RabbitProperties alongside them. We'll also have to keep the setter, albeit in a deprecated form.