san*_*nts 9 amazon-s3 amazon-web-services amazon-elastic-beanstalk
我已经设置了一个S3存储桶来将PUT对象上的事件发送到SQS,我正在处理EB工作层中的SQS队列.
SQS发送的消息的架构如下:http://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html
记录是一个数组,意味着可以在一个POST中将多个记录发送到我的工作人员的端点.这实际发生了吗?或者我的工作人员每封邮件只会收到一条记录吗?
无论收到的消息中有多少记录,工作者只能返回一个响应,200(成功处理消息)或非200(消息未成功处理,将其重新放入队列).
因此,如果我的工作人员在一条消息中收到多条记录,并且它成功地处理了一些(例如通过插入数据库等副作用)但是在一个或多个上失败,我应该如何处理?如果我返回200,那么失败的那些将不会被重试.但是如果我返回非200,那么成功处理的那些将被不必要地重试,并且可能重新插入.因此,我必须让我的工作人员足够聪明,只能重试失败的 - 这是我不想写的逻辑.
如果每封邮件只发送一条记录,这将更容易.所以,如果实际情况如此,尽管记录是阵列,我真的很想知道!
Mic*_*bot 10
要清楚,这不是"SQS发送"的记录.这是S3发送给 SQS(或SNS或Lambda)的记录.
目前,所有S3事件通知每个通知消息都有一个事件.我们可能会在将来添加新事件类型时包含多个记录.这也是跨其他AWS服务共享的消息格式,其他服务可以包含多个记录.
- https://forums.aws.amazon.com/thread.jspa?messageID=592264ঈ
所以,目前看来每封邮件只有一条记录.
但是......如果您认为您的应用程序不需要准备处理重复或重复的消息,那么您就犯了一个错误.在任何像SQS这样的大规模分布式系统中,绝对保证绝对不会发生这种情况是极其困难的,但不太可能:
问:我会收到多少次邮件?
Amazon SQS旨在为其队列中的所有消息提供"至少一次"传递.虽然大多数情况下每条消息只会传递给您的应用程序一次,但您应该设计系统,以便多次处理消息不会产生任何错误或不一致.
顺便说一句,在我的平台中,记录数组中的多个条目被视为错误,导致该消息被放弃并发送到死信队列以供查看.
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |