【问题标题】:AWS Simple Queue Service (SQS) visibility timeout - set max retries count?AWS 简单队列服务 (SQS) 可见性超时 - 设置最大重试次数?
【发布时间】:2020-06-10 08:09:53
【问题描述】:

我们有一个使用亚马逊 SQS 的队列,其中包含消息。

我们有多个从该队列读取的工作人员,这些工作人员是无状态的,这意味着他们无法记住每条消息有多少次重试,除非我们用重试次数更新消息。

目前,如果worker处理消息失败,消息会在我们设置的X秒后返回队列,因为我们没有删除它,我们设置VisisiblityTimeout参数表示消息会返回队列如果它没有被工作人员删除,则在 X 设置秒后。

SQS 队列或消息设置中是否有创建重试次数的选项,例如,如果消息返回队列超过或等于 3 次,它将从队列中删除?

public async pollMessage(queueName: string): Promise<QueueMessagePollResponse> {

    const parameters = {
        VisibilityTimeout: this.configService.queueVisibilityTimeoutSec,
        QueueUrl: this.buildQueueUrl(queueName),
    };

    return new Promise<QueueMessagePollResponse>((resolve, reject) => {
        this.sqs.receiveMessage(parameters, (error, data) => {
            if (error) {
                this.logger.error(`Failed polling from queue with error: ${error.message}`);
                reject(error);
            }

            if (!data.Messages) {
                return resolve(null);
            }

            resolve({
                messageDeletionId: data.Messages[0].ReceiptHandle,
                data: data.Messages[0].Body,
            });
        });
    });

}

【问题讨论】:

    标签: node.js amazon-web-services amazon-sqs


    【解决方案1】:

    您可以使用 A DLQ(死信队列)。设置 SQS 的重新驱动策略 没有。你想要的尝试次数,比如

    更多详情https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-dead-letter-queue.html

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 1970-01-01
      • 2011-07-15
      • 2018-03-23
      • 2015-04-27
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      相关资源
      最近更新 更多