Which actions should the solutions architect take to resolve this issue?
(Choose three.)
Reshard the stream to increase the number of shards in the stream.
Use the Kinesis Producer Library (KPL). Adjust the polling frequency.
Use consumers with the enhanced fan-out feature.
Reshard the stream to reduce the number of shards in the stream.
Use an error retry and exponential backoff mechanism in the consumer logic.
Configure the stream to use dynamic partitioning.
Explanations:
Resharding the stream to increase the number of shards allows for higher throughput by distributing the load across more shards, which can help alleviate throttling issues when there are many consumers reading from the stream. Each shard has a maximum read limit, so increasing the number of shards can accommodate more parallel reads.
While using the Kinesis Producer Library (KPL) can help with efficient data ingestion, adjusting the polling frequency is not directly relevant to resolving the throttling issue faced by consumers. The KPL mainly enhances the producer’s efficiency and does not inherently resolve read throughput limitations for consumers.
Using consumers with the enhanced fan-out feature allows each consumer to receive its own dedicated throughput (up to 2 MB per second) without being throttled by other consumers. This significantly reduces the chances of encountering the ReadProvisionedThroughputExceeded error when multiple consumers are accessing the same stream.
Resharding the stream to reduce the number of shards would decrease overall throughput capability, exacerbating the throttling problem rather than resolving it. Reducing the number of shards is not a viable solution in this context.
Implementing an error retry and exponential backoff mechanism in the consumer logic allows consumers to handle throttling gracefully. By retrying after a delay that increases with each failure, this approach can reduce the load on the stream and help prevent continuous throttling issues.
Kinesis Data Streams does not support dynamic partitioning. Streams are defined with a set number of shards, and changing the number of shards requires explicit resharding actions. Thus, configuring the stream for dynamic partitioning is not a feasible solution.