我有一个 Spring Boot 应用程序 v3.2.1,并且我正在使用
spring-cloud-aws-starter-sqs
v3.1.0。
我看到了这个向队列发送消息的示例,但它根本没有解决错误处理问题:
sqsTemplate
.send(sqsSendOptions ->
sqsSendOptions
.queue("myqueue")
.payload(message)
);
如果向队列发送消息失败,如何处理错误?
谢谢。
错误处理可以参考这部分文档:
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();
}