spring - 为什么 DefaultJmsListenerContainerFactory 不公开 setExceptionListener 方法?
问题描述
我正在为使用 aDefaultJmsListenerContainerFactory
注册@JmsListener
注释方法的应用程序构建遥测和监视过程。
我已经为接收消息时引发的异常注册了一个错误处理程序,但我想注册一个类似的错误处理程序来监视我的应用程序与其订阅的主题之间的连接完整性。
我在 中找到了这个漂亮的setExceptionListener
方法AbstractMessageListenerContainter
,但是DefaultJmsListenerContainerFactory
没有提供设置这个属性的配置方法。
我已经搜索了 spring 框架 JMS javadocs,看看是否有任何解释说明为什么这个配置选项不存在。有谁知道为什么这没有暴露的原因?
解决方案
这是最终使我能够访问此属性的原因。我测试了我仍然可以像以前一样接收来自该主题的消息
public class PortalJmsListenerContainerFactory
extends DefaultJmsListenerContainerFactory {
private ExceptionListener exceptionListener;
/**
* @see DefaultMessageListenerContainer#setExceptionListener
*/
public void setExceptionListener(ExceptionListener exceptionListener) {
this.exceptionListener = exceptionListener;
}
@Override
protected DefaultMessageListenerContainer createContainerInstance() {
return new DefaultMessageListenerContainer();
}
@Override
protected void initializeContainer(DefaultMessageListenerContainer container) {
super.initializeContainer(container);
if (this.exceptionListener != null) {
container.setExceptionListener(this.exceptionListener);
}
}
}
推荐阅读
- android - 在 androidx 中更改快餐栏字体
- php - esc_html__() 有什么作用,它的用途是什么?
- css - Webpack css-loader:如何将文件导入代码中的特定位置?
- eclipse - Test runs on command line, fails in Scala-IDE
- javascript - 将数字分成相等的部分并填充到数组中
- mysql - 当有多个时间戳时,如何在mysql中按一天中的小时对数据进行分组?
- drupal - 如何在 Drupal 8 中使用 REST API 将值发布到 Drupal 自定义表
- c# - 如何替换文本文件中的单词而不推送远处的单词?
- android - Android:Unicode 应用程序标题(标签)未呈现
- java - java - 如何使用unix服务器的正则表达式模式在java中拆分带有两个空行的字符串