小编Ber*_*vas的帖子

有没有办法向 SqsListener 添加 ErrorHandler 或 ExceptionHandler?

我有一个 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)

java spring json amazon-sqs spring-boot

4
推荐指数
1
解决办法
3449
查看次数

标签 统计

amazon-sqs ×1

java ×1

json ×1

spring ×1

spring-boot ×1