Difference between AmazonKinesisClient getRecord() AND IRecordProcessor processRecords()

While reading records from aws kinesis stream what is the difference between

AmazonKinesisClient method getRecord() AND IRecordProcessor interface’s method processRecords().

As the processRecords() of IRecordProcessor is used to process records from stream, While getRecords() of AmazonKinesisClient is just for getting records and obviously we can process after getting records.

But what is the main difference or use case of these diffrent approached to get records?

Also is there any way we can get Records that are processed by using AmazonKinesisClient .

Answer

getRecords is AWS API level call to GetRecords and belongs to official AWS Java SDK for Java.

In contrast, processRecords is part of Kinesis Client Library which is a separate, higher level library to interact with Kinesis:

KCL helps you consume and process data from a Kinesis data stream by taking care of many of the complex tasks associated with distributed computing. These include load balancing across multiple consumer application instances, responding to consumer application instance failures, checkpointing processed records, and reacting to resharding.