使用 SqsTemplate 进行异常处理

问题描述 投票:0回答:1

我有一个 Spring Boot 应用程序 v3.2.1,并且我正在使用

spring-cloud-aws-starter-sqs
v3.1.0。

我看到了这个向队列发送消息的示例,但它根本没有解决错误处理问题:

sqsTemplate
    .send(sqsSendOptions ->
        sqsSendOptions
            .queue("myqueue")
            .payload(message)
    );

如果向队列发送消息失败,如何处理错误?

谢谢。

java spring-boot spring-cloud amazon-sqs
1个回答
0
投票

错误处理可以参考这部分文档:

https://docs.awspring.io/spring-cloud-aws/docs/3.0.2/reference/html/index.html#error-handling

您可以创建一个错误处理程序来处理无法使用@Bean处理的消息。例如:

@Bean
public ErrorHandler<Object> errorHandler() {
    return new ErrorHandler<Object>() {
        @Override
        public void handle(Message<Object> message, Throwable t) {
            // error handling logic
            // throw if the message should not be acknowledged
        }
    }}

或者您可以将其添加到您的

MessageListenerContainerFactory
:

@Bean
public SqsMessageListenerContainerFactory<Object> defaultSqsListenerContainerFactory() {
    return SqsMessageListenerContainerFactory
        .builder()
        .sqsAsyncClientSupplier(BaseSqsIntegrationTest::createAsyncClient)
        .errorHandler(new ErrorHandler<Object>() {
            @Override
            public void handle(Message<Object> message, Throwable t) {
                // error handling logic
            }
        })
        .build();
}
© www.soinside.com 2019 - 2024. All rights reserved.