我有一个 SqsListener,使用自定义 QueueMessageHandlerFactory 和消息转换器来从 JSON 到 POJO 并返回。如果由于某种原因侦听器方法无法解析消息中的 JSON 正文,它将抛出 org.springframework.messaging.converter.MessageConversionException。我想捕获这个异常并正确记录它。我知道 JMS 侦听器允许您添加自定义 ErrorHandler 作为工厂定义的一部分。
是否有类似的方法来定义自定义 ErrorHandler 以使用 Spring 的 SqsListener 捕获此异常并记录它?
谢谢!
@Bean
public QueueMessageHandlerFactory queueMessageHandlerFactory(MessageConverter messageConverter) {
QueueMessageHandlerFactory factory = new QueueMessageHandlerFactory();
AcknowledgmentHandlerMethodArgumentResolver acknowledgmentResolver =
new AcknowledgmentHandlerMethodArgumentResolver(
ACKNOWLEDGMENT_HEADER_NAME);
PayloadArgumentResolver payloadArgumentResolver = new PayloadArgumentResolver(messageConverter);
factory.setArgumentResolvers(Arrays.asList(acknowledgmentResolver, payloadArgumentResolver));
return factory;
}
@Bean
protected MessageConverter messageConverter(ObjectMapper objectMapper) {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setObjectMapper(objectMapper);
converter.setStrictContentTypeMatch(false);
return converter;
}
Run Code Online (Sandbox Code Playgroud)
听众:
@SqsListener(value = "${aws.sqs.queueName}", deletionPolicy = SqsMessageDeletionPolicy.NEVER)
public void receiveMessage(MyCustomPOJO pollo, Acknowledgment acknowledgment) { …Run Code Online (Sandbox Code Playgroud)