Вы действительно должны исправить NPE, но вы можете настроить обработчик ошибок контейнера слушателя.
По умолчанию ConditionalRejectingErrorHandler
обрабатывает определенные исключения как фатальные.
Используется DefaultExceptionStrategy
, который имеетследующий код:
private boolean isCauseFatal(Throwable cause) {
return cause instanceof MessageConversionException // NOSONAR boolean complexity
|| cause instanceof org.springframework.messaging.converter.MessageConversionException
|| cause instanceof MethodArgumentResolutionException
|| cause instanceof NoSuchMethodException
|| cause instanceof ClassCastException
|| isUserCauseFatal(cause);
}
/**
* Subclasses can override this to add custom exceptions.
* @param cause the cause
* @return true if the cause is fatal.
*/
protected boolean isUserCauseFatal(Throwable cause) {
return false;
}
Итак, сконфигурируйте свой собственный ConditionalRejectingErrorHandler
с подклассом DefaultExceptionStrategy
, который переопределяет isUserCauseFatal()
и возвращает true для NullPointerException
.
Затем вы вводитеваша ошибка содержится в контейнере слушателя или фабрике контейнера слушателя.
Другой способ - добавить перехватчик повторов;по умолчанию ошибка регистрируется только после того, как повторные попытки исчерпаны.С пружинной загрузкой восстановитель по умолчанию является RejectAndDontRequeueRecoverer
.