首页 > 解决方案 > @SqsListener with deletePolicy = SqsMessageDeletionPolicy.ALWAYS 不会从队列中删除消息

问题描述

我使用 @SqsListener 和 deletePolicy = SqsMessageDeletionPolicy.ALWAYS 如下:

    @Override
    @SqsListener(value = "${sqs.queueName}", deletionPolicy = SqsMessageDeletionPolicy.ALWAYS)
    public void processMessage(String messageAsJson) {
        log.info("received a new SQS message: {}", messageAsJson);
        try {
            MessageResponse messageResponse = this.objectMapper.readValue(messageAsJson, MessageResponse.class);
            iMessageHandler.handle(messageResponse);            
        } catch (Exception e) {
            log.error("exception in reading SQS message {} with error {}", messageAsJson, e);
            return;
        }
    }

当我打开 AWS 控制台并单击“轮询消息”时,我可以看到一些“接收计数”> 1 的消息:

在此处输入图像描述

我读到这意味着这些消息返回到队列中。但我指定

deletionPolicy = SqsMessageDeletionPolicy.ALWAYS

那么为什么会这样呢?

谢谢!

标签: springspring-cloudamazon-sqs

解决方案


推荐阅读