A Java client library for building scalable, fault-tolerant applications that consume and process data from Amazon Kinesis Data Streams.
Amazon Kinesis Client Library (KCL) is a Java library for building applications that consume and process data from Amazon Kinesis Data Streams. It solves the problem of handling the operational complexities of distributed stream processing, such as load balancing, fault tolerance, and checkpointing, allowing developers to focus on their data processing logic.
Java developers building real-time data processing applications on AWS, particularly those who need to consume high-volume, streaming data from Kinesis Data Streams with reliability and scalability.
Developers choose KCL because it provides a managed, production-ready framework for stream consumption that handles scaling, fault tolerance, and checkpointing automatically, reducing the need to build and maintain custom distributed systems infrastructure.
Client library for Amazon Kinesis
Dynamically scales processing across workers, supporting manual or auto-scaling without load redistribution, as highlighted in the Scalability feature section of the README.
Provides at-least-once delivery and continuous processing during worker failures, with built-in mechanisms ensuring reliability even in distributed failures.
Handles shard splits and merges seamlessly, maintaining ordering by processing child shards only after parent completion, as described in the Stream-Level Change Handling feature.
Supports Java natively and enables other languages through MultiLangDaemon, allowing diverse development teams to write processors in languages like Python without Java expertise.
KCL 1.x is nearing end-of-support, requiring non-trivial interface and credential provider updates to migrate to 3.x, as warned in the IMPORTANT notice, adding maintenance overhead.
Specific AWS SDK for Java versions (2.27.19-2.27.23) cause DynamoDB exceptions with KCL 3.x, necessitating careful version management and updates, as highlighted in the warning box.
Tightly integrated with Amazon Kinesis and AWS ecosystem, making it unsuitable for multi-cloud or on-premises deployments without significant rework.
Amazon Kinesis Producer Library
Amazon Kinesis Client Library for Python
The Kinesis Scaling Utility is designed to give you the ability to scale Amazon Kinesis Streams in the same way that you scale EC2 Auto Scaling groups – up or down by a count or as a percentage of the total fleet. You can also simply scale to an exact number of Shards. There is no requirement for you to manage the allocation of the keyspace to Shards when using this API, as it is done automatically.
The Amazon Kinesis Connector Library is a Java framework that simplifies the integration of Amazon Kinesis data streams with various storage and analytics services. It provides a structured pipeline for processing, transforming, and emitting streaming data to destinations such as DynamoDB, Redshift, S3, and Elasticsearch, enabling real-time data workflows. ## Key Features - **Modular Pipeline** — Implements interfaces for transformation, filtering, buffering, and emission to define custom data flows. - **Pre-built Connectors** — Includes ready-to-use connectors for AWS DynamoDB, Redshift, S3, and Elasticsearch. - **Batch Processing** — Buffers records based on configurable thresholds (count, size, time) for efficient batch writes. - **Custom Transformations** — Supports user-defined data models and serializers via the ITransformer interface. - **Sample Implementations** — Provides complete sample applications with Ant/Maven build files for each connector type. ## Philosophy The library emphasizes a decoupled, extensible architecture where developers can plug in custom logic for each stage of the data pipeline, promoting flexibility and reuse in stream processing applications.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.