Does Kinesis guarantee delivery?

Viewed 1993

I am searching the documentation of Kinesis Data Streams but I can't find a clear statement like

Kinesis guarantees at least once delivery

From the producer side I expect that a message sent, gets propagated to more than one nodes (something like Kafka's ack=all) From the consumer side I am expecting something equivalent to Kafka commit offset on successful processing from the consumer, or something like Google Cloud's Pub/Sub message acknowledgement.

Is there a submit message guarantee for Kinesis? Is there a processing guarantee for Kinesis (mark message as read only if processed and acknowledged that it was processed)

2 Answers

From the comments, if you are really after server-less approach, why not use Lambda Event source mapping to consume Kinesis messages?

  • Lambda/AWS will poll for messages, batch them up and call our lambda function for a batch of records(batch size as small as 1).
  • If Lambda function returns success, batch will be committed and function will be called for next batch.
  • If Lambda function returns failure, batch can be retired.
  • Unlike Kafka consumers where we need to handle retrying exceptions separately with another kafka topic or a database, to keep consumer moving forward, AWS Lambda supports asynchronous retires as well.

For a simple use case, Kinesis + Lambda is as good as Kafka + Consumer.

Related