问题描述
Here is answered 如何为整个 ErrorHandler
设置 JmsListenerContainerFactory
。
但我需要每个 JmsListener (DefaultMessageListenerContainer
) 都有自己的 ErrorHandler
。
仅在我的侦听器中使用 try-catch 是不合适的,因为它不会捕获 JMS 事务的失败(事务在 Spring 中提交,在我的侦听器之外)。
我想通过监控系统收集此类故障。
我尝试使用
JmsListenerEndpointRegistry
.getListenerContainers()
.forEach{ it.errorHandler = myErrorHandler }
但是
请指教。
解决方法
我看到的唯一方法是为所有不同的 customID
及其特定的 JmsListenerContainerFactory
配置单独的 @JmsListener
bean。这些 ErrorHandler
中的每一个都应该从这个选项中引用他们自己的工厂:
@JmsListener