Reputation: 80
Here is answered how to set an ErrorHandler
for a whole JmsListenerContainerFactory
.
But I need each JmsListener (DefaultMessageListenerContainer
) to have its own ErrorHandler
.
Just having a try-catch inside my listener would not fit, because it won't catch JMS transactions' failures (transaction is committed in Spring, outside of my listener).
I would like to collect such failures by a monitoring system.
I tried to use
JmsListenerEndpointRegistry
.getListenerContainers()
.forEach{ it.errorHandler = myErrorHandler }
But
JmsListener
-annotated beans are handled by its BeanPostProcessor. So I struggle with choosing a moment to set error handlers.Please advise something.
Upvotes: 0
Views: 128
Reputation: 121272
The only way I see is to configure separate JmsListenerContainerFactory
beans for all those different @JmsListener
and their specific ErrorHandler
. Each of those @JmsListener
should refer to their own factory from this option:
/**
* The bean name of the {@link org.springframework.jms.config.JmsListenerContainerFactory}
* to use to create the message listener container responsible for serving this endpoint.
* <p>If not specified, the default container factory is used, if any.
*/
String containerFactory() default "";
Upvotes: 1