S3通知发生或SQS接收序列发生器订购

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

来自Amazon S3 Event Notifications documentation

在通知配置中,您可以请求Amazon S3将事件发布到SQS队列。目前,标准SQS队列仅允许作为Amazon S3事件通知目标,而不允许使用FIFO SQS队列。有关SQS的更多信息,请参阅Amazon SQS产品详细信息页面。

SQS事件队列的对象事件上的定序器是否会反映S3操作发生的顺序,或者SQS队列(非fifo)接收事件的顺序?

amazon-web-services amazon-s3 amazon-sqs
2个回答
1
投票

event.Records[0].s3.object.sequencer上找到的顺控程序仅用于消除单个存储桶中单个对象键的事件排序。

它允许您确定影响单个对象的事件的顺序,例如一个对象的多次覆盖或一个对象的多个版本的创建。

对于存储桶中不同存储桶或对象的事件,定序器值不应被视为对于排序比较有用。

相反,使用event.Records[0].eventTime来比较影响不同对象的事件的顺序。

实际上,除非事件接近,否则您通常可以使用此值,即使对于单个对象也是如此。

https://docs.aws.amazon.com/AmazonS3/latest/dev/notification-content-structure.html

请注意,在比较一个对象的音序器值时,必须首先确定最长音序器值的最大长度,然后使用0将所有其他值保持为相同长度,然后将它们作为字符串而不是数字(它们是十六进制)进行词法比较。字符串)...所以,如果你有音序器值211f38 theb你需要将21填充到0021,此时它被正确地确定为小于1f37。这些都是例子,真正的音序器要长得多。不要指望序列发生器是单调的 - 只有后一个值总是大于先前的值,对于一个对象。


1
投票

documentation for Standard queues中所述:

标准队列提供尽力排序,确保消息通常以与发送时相同的顺序传送。

因此,事件顺序无法保证,但会大致反映从S3发送的顺序。

编辑:您可以使用SentTimestamp in the message attributes查看邮件何时发送到队列,并按此排序。

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