'How do I set a global error handler without overriding existing RabbitListenerContainerFactory in Spring AMQP?

I have a situation where there are many downstream projects using a same common library holding the RabbitMQ configuration.

I want to add a global error handler in such common configuration but pretty much all online documentation says that I have to declare my own RabbitListenerContainerFactory so that I can set my error handler in the bean definition code (e.g. via autowiring a SimpleRabbitListenerContainerFactoryConfigurer whose by the way I haven't fully understood the purpose).

However, I don't want to override any existing RabbitListenerContainerFactory, because some of the downstream projects declare their own implementation of it, and I don't want to go and set my global error handler for each of them. I want to declare the global error handler only in the common library and once for all.

How can I do that by using the existing implementation of RabbitListenerContainerFactory whatever that is?



Solution 1:[1]

Seems like I have found a working solution.

@Configuration
public class SimpleRabbitListenerContainerFactoryExtraConfig {

  public SimpleRabbitListenerContainerFactoryExtraConfig(
      final SimpleRabbitListenerContainerFactory factory,
      final MyErrorHandler handler) {
    factory.setErrorHandler(handler);
  }
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Daniele Repici