gpt4 book ai didi

amazon-web-services - SQS 是否真的为每条消息发送多个 S3 PUT 对象记录?

转载 作者:行者123 更新时间:2023-12-04 03:51:09 25 4
gpt4 key购买 nike

我已经设置了一个 S3 存储桶来向 SQS 发出关于 PUT 对象的事件,并且我正在处理 EB 工作层中的 SQS 队列。

SQS 发送的消息的架构在这里:http://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html

Records 是一个数组,这意味着可以在一个 POST 中将多条记录发送到我的工作人员的端点。这真的会发生吗?或者我的工作人员每条消息只会收到一条记录?

无论收到的消息中有多少条记录,worker 只能返回一个响应,200(消息处理成功)或非 200(消息未成功处理,将其放回队列)。

因此,如果我的工作人员在一条消息中收到多条记录,并且它成功处理了一些记录(例如通过执行一些具有副作用的操作,例如插入数据库)但在一个或多个上失败,我应该如何处理?如果我返回 200,则不会重试失败的那些。但是如果我返回非 200,那么成功处理的那些将被不必要地重试,并可能重新插入。所以我必须让我的 worker 足够聪明,只重试失败的——这是我不想写的逻辑。

如果每条消息只发送一条记录,这将容易得多。因此,如果在实践中是这种情况,尽管记录是一个数组,但我真的很想知道!

最佳答案

需要明确的是,这不是“SQS 发送”的记录。它是 S3 发送给 SQS(或 SNS,或 Lambda)的记录。

Currently, all S3 event notifications have a single event per notification message. We might include multiple records as we add new event types in the future. This is also a message format that is shared across other AWS services, and other services can include multiple records.

https://forums.aws.amazon.com/thread.jspa?messageID=592264&#592264


因此,就目前而言,每条消息似乎只有一条记录。
但是...如果您认为您的应用程序不需要准备处理重复或重复的消息,那么您就犯了一个错误。在任何像 SQS 这样的大规模分布式系统中,很难绝对保证这永远不会发生,无论多么不可能:

Q: How many times will I receive each message?

Amazon SQS is engineered to provide “at least once” delivery of all messages in its queues. Although most of the time each message will be delivered to your application exactly once, you should design your system so that processing a message more than once does not create any errors or inconsistencies.

http://aws.amazon.com/sqs/faqs/


顺便说一句,在我的平台中,记录数组中的多个条目被认为是错误的,导致消息被放弃并发送到 dead letter queue供审查。

关于amazon-web-services - SQS 是否真的为每条消息发送多个 S3 PUT 对象记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com