AbstractAdaptableMessageListener 中 onMessage 的默认实现很简单:
onMessage(Message message) {
try {
onMessage(message, null);
} catch(Throwable ex) {
handleListenerException(ex);
}
}
即使处理异常的尝试值得称道,但在大多数情况下, handleListenerException 中的实际处理还不够(它只记录有关异常的错误级别消息)。大多数真正的应用程序谁愿意使用 MessageListenerAdapter 并只是创建一个POJO来接收格式化的消息有更多细粒度的异常处理要求。
为什么这样做呢? onMessage 实现可以简单地用一个带有空Session参数的 onMessage 方法调用替换,并且没有try catch并且只是允许应用程序拦截(Java Enterprise拦截器或Spring Aspect) onMessage JMS方法并执行集成/一致的异常处理?在过去,我不得不将 MessageListenerAdapter 子类化为覆盖 onMessage 或 handleListenerException 方法以自行处理异常。