手动确认 sqs?

Manual acknolwedgement of sqs?

目前我们正在使用 'RabbitMQ' 进行可靠的消息传递,我们计划移动 SQS.RMQP 通过 TCP 监视其消费者,当队列的任何消费者出现故障时,它将自动重新排队消息进行处理。

SQS 会监控它的所有从站吗?如果其中一个消费者在处理消息时出现故障,消息是否会在队列中可见?

我试图从文档中找到相同的内容,但找不到任何内容。

如果'slaves',你指的是SQS消费者,那么不,SQS不监控队列中的消费者。

简而言之,SQS 是这样工作的:

  • 消费者从队列中请求一条消息。
  • SQS 将消息发送给消费者进行处理,并使该消息暂时对其他消费者不可见。
  • 当消费者处理完消息后,它向 SQS 发回 'DeleteMessage' 请求,SQS 从队列中删除该项目。
  • 如果消费者没有尽快(在其可配置的超时期限内)发回删除的消息,则 SQS 会自动将消息放回队列中。

所以 SQS 不会监视您的消费者,但如果消费者请求消息 - 但对它们不做任何事情 - 它们最终会回到队列中以供其他人处理。

但是,如果您的队列没有任何消费者,那么迟早(最多 14 天),消息将被完全删除(或发送到 dead-letter-queue,如果您已设置)。

在 auto-scaling 组中设置队列消费者通常是个好主意,其中 health-check 可以验证它是否正确 running/processing。如果一个实例未通过健康检查,它将被终止并启动一个新实例以继续队列中的工作。或者,如果 SQS 队列的大小增长以满足高峰需求,您可以启动额外的实例。