AWS Kinesis 如何确认已收到事件?

How Does AWS Kinesis confirm that an event has been received?

我们在流处理项目中使用 AWS Kinesis,我想知道它如何确认或通知已收到消息,此外,是否存在配置它的方法。我在他们的文档中找不到任何内容。

由于 AWS Kinesis 基于 Kafka 分支,它可能是配置此行为的一种方式。

Kinesis 是无服务器的,通过 HTTP 公开,不同于 Kafka 和 AWS MSK 使用基于 TCP 的 Kafka 协议。

记录通过 PutRecord or PutRecords API calls and received via GetRecords API 调用发送。

对于 数据生产者,您检查 API 调用的响应以确认记录已添加到流中,来自 AWS docs 的 PutRecords 的示例响应.

HTTP/1.1 200 OK
x-amzn-RequestId: <RequestId>
Content-Type: application/x-amz-json-1.1
Content-Length: <PayloadSizeBytes>
Date: <Date> 
{
    "FailedRecordCount": 2,
    "Records": [
        {
            "SequenceNumber": "49543463076548007577105092703039560359975228518395012686", 
            "ShardId": "shardId-000000000000"
        }, 
        {
            "ErrorCode": "ProvisionedThroughputExceededException",
            "ErrorMessage": "Rate exceeded for shard shardId-000000000001 in stream exampleStreamName under account 111111111111."
        },
        {
            "ErrorCode": "InternalFailure",
            "ErrorMessage": "Internal service failure."
        }
    ]
}

对于数据消费者,您不会通知流已收到消息,所有消费者都可以使用记录,直到它们过期,它适用于拉模型。

消费者负责interact over the shards并接收新消息。

如果您想构建自定义消费者,AWS 有一个 client library (KCL) 可以为您处理流处理。

当您调用 PutRecord API, you will either receive an error or a response with ShardId and SequenceNumber fields that tell you where the message was stored. The PutRecords API 时类似,只是响应会为您提供您写入的每条记录的状态,并且 批处理中的一些记录可能失败而其他人成功。

如果这不能回答您的问题,请完整地描述您如何写信给 Kinesis,以及您希望看到的通知内容。