An opinionated Elixir wrapper around the Brod Kafka client with built-in support for Heroku Kafka and encrypted connections.
Kaffe is an opinionated Elixir wrapper around the Brod Erlang Kafka client that simplifies building Kafka producers and consumers. It provides a higher-level API for common Kafka operations, with built-in support for encrypted connections to Heroku Kafka and features like batch message processing.
Elixir developers building applications that need to produce or consume messages from Apache Kafka, particularly those deploying to Heroku or requiring secure, production-ready Kafka integrations.
Developers choose Kaffe because it reduces boilerplate configuration, handles encryption and Heroku integration automatically, and provides robust batch processing capabilities while maintaining compatibility with the underlying Brod client's performance and scalability.
An opinionated Elixir wrapper around brod, the Erlang Kafka client, that supports encrypted connections to Heroku Kafka out of the box.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses :brod_group_member for batch message consumption, improving throughput and horizontal scaling with partition-aware workers, as shown in the GroupMember configuration.
Automatically configures encrypted connections for Heroku Kafka by reading environment variables like KAFKA_URL, reducing manual setup for secure deployments.
Supports custom offset commit responses like {:ok, :no_commit} or specific offsets, enabling reliable batch processing and error recovery in consumer workflows.
Offers multiple partition strategies for producers, including MD5 hashing and random selection, allowing tailored message distribution across Kafka topics.
The README warns that the API may change and there could be serious bugs, as it's still under active development, posing potential stability issues for production.
Lacks support for asynchronous message production, limiting options for high-throughput or non-blocking producer scenarios, which might affect performance.
Requires manual setup of dependencies like snappyer and lz4b for compression support, adding complexity compared to libraries with out-of-the-box compression.