【发布时间】:2016-07-08 15:22:07
【问题描述】:
我正在开发一个应用程序,该应用程序使用 Kinesis Client Library (KCL) 从 AWS Kinesis Stream 读取和处理事件。我不希望事件生产者一方遭受延迟,因此 KinesisAsyncClient 用于发送事件。但是,为了让我的事件处理正常工作,我需要在我的生产者端按照“我调用 putRecordAsync 的顺序”处理事件。此信息作为每个 Kinesis 记录中的时间戳字段提供。
除了切换到使用阻塞同步 Kinesis 客户端之外,还有其他解决方案可以有效地对流事件进行排序吗?
【问题讨论】:
-
阅读器将按照事件在流中的顺序获取事件。您只能从生产者端控制事件的顺序。您可以使用 putRecords(注意 s),它将多个事件按顺序排列。您还可以使用上一个事件的 seq-id 将下一个事件放在它后面。你觉得这有意义吗?
-
@Guy 使用 Kinesis 的 Async Client 的 putRecordsAync 是否也能保证事件的顺序?
-
使用 PutRecords(同步或异步)对 Kinesis 的 API 调用会保留调用负载中事件的顺序。如果您在客户端代码中执行额外的批处理以创建不同的 API 调用,这些事件可能不是您在多次调用中调用异步的顺序。
标签: amazon-web-services amazon-kinesis