服务的多个实例 - SQS 消费者

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

我有一个名为

DataProcessService
的服务,它部署在服务中的多个实例中以进行扩展。

DataProcessService
SQS消费者,它从SQS主题接收消息,一旦该过程完成,服务就会从队列中删除该消息。

我已启用 SQS 消息 可见性超时 为 15 分钟

现在我遇到的问题是:

DataProcessService
的一个实例收到一条消息并进行处理,需要超过 15 分钟,同时另一个实例由于 15 分钟的可见性超时而收到相同的消息。

如何确定一个实例是否仍在处理消息,并确保另一个实例不会选择要处理的消息

amazon-sqs message-queue visibility aws-sqs-fifo
1个回答
0
投票

我也遇到过类似的问题,所以我的处理方法是。我将把每个实例称为一个进程,因为我假设两个实例执行相同的业务逻辑,对吗?如果我的理解有误请指正。

  1. 进程收到消息后立即从 SQS 中显式删除该消息。
  2. 一旦您在服务中阅读它,请确保正确登录,以便您可以跟踪收到和删除的消息。
  3. 现在,假设两个进程在同一时间收到相同的消息,但您将让代码仅根据是否成功删除了 SQS 消息来决定。否则,您的流程不应执行任何业务逻辑,以避免口是心非。

希望这对您有用。

© www.soinside.com 2019 - 2024. All rights reserved.