我们应该如何使用 Spring Cloud AWS 3.0.2 设置 @SQSListener 删除策略?

Kei*_*ett 3 spring-cloud-aws

我能够弄清楚如何设置它的唯一方法是在我的配置中使用以下覆盖:

@Bean("myFactory")
@ConditionalOnClass(SqsAsyncClient.class)
SqsMessageListenerContainerFactory<Object> mySqsListenerContainerFactory(
    SqsAsyncClient sqsAsyncClient) {
  return SqsMessageListenerContainerFactory.builder()
      .configure(
          options ->
              options.acknowledgementMode(
                  AcknowledgementMode.valueOf("ON_SUCCESS")))
      .sqsAsyncClient(sqsAsyncClient)
      .build();
}
Run Code Online (Sandbox Code Playgroud)

这在我的@SQSListener

@SqsListener(
      value = "myQueue",
      factory = "myFactory")
Run Code Online (Sandbox Code Playgroud)

我还没有弄清楚如何配置它,以便io.awspring.cloud.autoconfigure.sqs.SqsAutoConfiguration类可以设置确认模式,并且我可以获得让 Spring 自动配置我需要的一切的好处。谁能告诉我应该如何继续发展?

在 Spring Cloud AWS 3.x 之前,我们设置如下@SQSListener,似乎不再支持:

@SqsListener(
      value = "myQueue",
      deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)

Run Code Online (Sandbox Code Playgroud)

seb*_*seb 5

在Spring Cloud AWS 3.0中,默认的确认模式是ON_SUCCESS[0]。

使用另一种确认模式目前只能通过工厂完成,但在下一个版本(3.1)中,将可以再次在注释中直接设置它@SqsListener[1]。

[0] https://docs.awspring.io/spring-cloud-aws/docs/3.0.2/reference/html/index.html#sqscontaineroptions-descriptions

[1] https://github.com/awspring/spring-cloud-aws/pull/870