This is expected behavior. If you had more than one shard, you will notice that the KCL will load balance across those two instances. Kinesis shards are usually meant to be consumed in a serial fashion by a single thread per shard. This helps with maintaining ordering guarantees within a shard, and makes things like the checkpointing logic simple and co-ordination free.
Thanks Rohit for confirming, this is the exact behavior observed by me. So once I have increased the shard size from 1 to 2, both of my instances that belong to same application starts receiving the messages from each shard. I still think documentation should be more clear for these real world edge cases.
Different instances of same application reading data using KCL 1.Xasked 3 years ago
Question on how KCL creates new RecordProcessors with multiple instancesasked 2 years ago
Kinesis data stream iterator age spikesasked 4 months ago
I have question on KCL(Kinesis Customer Library)Accepted Answerasked 4 years ago
When exactly does KCL drop records? Can't recreate (but need to handle)asked 7 months ago
How to you manage application state when using KCLasked 3 months ago
Why so many shardIds when I've only configured 3 in my Kinesis Stream?Accepted Answerasked 2 years ago
Help processing Kinessis Records with KCL and JavaAccepted Answerasked a year ago
Example of KCL working with MultiStreamTrackerasked 6 months ago
DynamoDB Streams - Are shards ordered in the stream description?Accepted Answerasked 7 years ago