mrkeyoor.com_
Tue 01 Sept 17:43 UTC
Dataevaluationupdated 26 Aug 2026

kafka review

Apache Kafka is a distributed event-streaming system for moving and retaining records between applications. It solves the problem of many producers and consumers needing a shared, ordered log instead of a mesh of direct integrations.

+25stars / 7d
Verdict

Our Kafka checkout installed 45 Python packages and built committer-tools, but pytest collected 0 tests, so our run says nothing about broker correctness. Kafka is the sensible choice when an organization truly needs a shared event log and can staff its operation. For a modest queue or a team without broker expertise, start with a smaller system or a managed Kafka service.

We ran it

Lab card: what happened when we ran kafkaScreenshot of kafka (kafka.apache.org)
Install✓ · 67s45 packages · 63 MB
Build✓ · 15s
Tests✗ · 9s0 passed · 0 failed of 0 (pytest)
Known vulns0(pip-audit)
Repo7495 files~1,599,276 lines of source · 86 MB · 20 CI workflows · tests dir

Answers from our run

Does kafka build from source?

Dependencies installed in 67 seconds (45 packages), and the build succeeded in 15 seconds. We cloned commit 191a7fb into a clean Debian container with 3 CPUs and no project-specific setup.

Do kafka's tests pass?

Yes: 0 of 0 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does kafka have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use kafka?

Small applications that only need a job queue: Kafka's brokers, partitions, retention, and operational surface can cost more attention than the workload deserves.

What are the alternatives to kafka?

Apache Pulsar, Redpanda, NATS Server. Our Kafka checkout installed 45 Python packages and built committer-tools, but pytest collected 0 tests, so our run says nothing about broker correctness.

Setup2/5Local broker steps are short; production operation is substantial
Docs5/5README covers builds, tests, broker start, and toolchain details
Community5/533,628 stars and a push on August 26, 2026
Maturity5/5Established broker with explicit build and compatibility practices

Discussed on

  1. hnI wrote a children's book / illustrated guide to Apache Kafka1,797 points
  2. hnWhat every software engineer should know about Apache Kafka597 points
  3. hnApache Kafka Goes 1.0392 points
  4. hnPublishing with Apache Kafka at The New York Times369 points
  5. hnKSQL: Open Source Streaming SQL for Apache Kafka278 points

Who it’s for

Platform teams building durable event pipelines between services and data systems.
Developers who need producers and consumers to work at different speeds without direct coupling.
Organizations prepared to operate brokers, storage, access control, monitoring, and upgrades.
Java teams that want Kafka Streams alongside the broker and client APIs.

Who it’s NOT for

Small applications that only need a job queue: Kafka's brokers, partitions, retention, and operational surface can cost more attention than the workload deserves.
Teams unable to standardize on the documented Java toolchain: the README builds and tests with Java 17 and 25, with Scala 2.13 as the only supported Scala version.
Buyers seeking a managed service with an operator on call: this repository supplies the software, while deployment ownership remains with you.
Contributors expecting our Python-side check to validate the broker: our measured project was committer-tools, and its pytest command collected 0 tests.

Setup reality

Our sandbox installed 45 Python packages from committer-tools in 67 seconds, using 63 MB. That subproject built in 15 seconds. Pytest exited 5 after 9 seconds because it collected 0 tests, so the result was 0 passed and 0 failed of 0. Pip-audit found 0 known vulnerabilities.

The broker itself needs Java. The README says Kafka is built and tested with Java 17 and 25, uses Java 11 compatibility for clients and Streams, and supports only Scala 2.13. A local broker also needs formatted storage and a generated cluster ID.

Production effort sits beyond installation: broker sizing, retained data, replication, authentication, monitoring, and upgrades remain operator work. Our run did not build, start, or test the Java broker, and its successful Python build should not be read as broker validation.

Kafka is a shared log for systems that cannot move in lockstep

Apache Kafka accepts records from producers, retains them in ordered partitions, and lets consumers read at their own pace. That model works for service events, data integration, and streaming applications because a producer does not need a direct connection to every downstream system. Consumers can also replay retained records when they rebuild state or recover from an outage.

The repository is large enough to demand deliberate ownership. Our checkout contained 7,495 files, about 1,599,276 lines of source, and occupied 86 MB before the measured dependency install. The top-level project includes the broker, clients, Kafka Streams, tests, examples, build tooling, and release machinery. A team adopting Kafka is taking on a platform, not adding a small queue library to one application.

Ordering is scoped by partition, which is central to design work. More partitions create more parallel work, while related events often need the same partition if their order matters. Retention also separates Kafka from a simple handoff queue: a consumer's successful read does not inherently erase the record. Those choices help replay and fan-out, but they require teams to define keys, schemas, retention, and failure behavior before production traffic arrives.

What happened when we ran it

Our sandbox cloned commit 191a7fb with 3 CPUs and 8 GB of RAM, then worked inside ./committer-tools, the Python project selected by the harness. Installation succeeded in 67 seconds, adding 45 packages and using 63 MB on disk. Its build succeeded in 15 seconds. Pip-audit reported 0 known vulnerabilities in that installed Python environment.

The test step failed with exit code 5 after 9 seconds. Pytest printed no tests ran in 0.00s, which means it collected 0 tests and therefore reported 0 passed and 0 failed of 0. There was no failing assertion or broker error in the supplied log. The finding is simply that this command did not execute a test suite.

That scope matters more than the green build. We did not build the Java and Scala broker, run ./gradlew test, format broker storage, start a server, or send records. The repository has 20 CI workflow files and a tests directory, but those signals do not turn our Python subproject run into broker evidence. Any claim about Kafka throughput, durability, or full-suite status would need another run.

Java 17 is the contributor baseline

The README says Kafka is built and tested with Java 17 and 25. Client and Streams modules target Java 11 compatibility, while the rest targets Java 17. Scala 2.13 is the only supported Scala version. Developers using IntelliJ are told to use JDK 17, and Gradle tasks cover JARs, documentation, unit tests, integration tests, coverage, formatting, static analysis, and release archives.

A local broker can be started after generating a cluster ID and formatting storage with the supplied server configuration. The README also gives a one-line Docker start on port 9092. Both are useful experiments. Neither covers a production cluster's storage capacity, replication policy, listener security, authorization, monitoring, recovery testing, or upgrade sequence.

The build instructions are unusually frank about test controls. Gradle can run unit and integration suites separately, include tests marked flaky, retry a limited number of failures, and rerun one case hundreds of times. The repository even links a flaky-test report from its README. That is the kind of machinery expected in a mature infrastructure project, although our 9-second pytest attempt never exercised it.

Operating the broker is harder than starting port 9092

Kafka can remove direct dependencies between many producers and consumers, but it creates a new dependency on the cluster. Operators must know when disks are filling, replicas are unhealthy, consumers are falling behind, or partition choices are limiting a workload. Authentication and authorization also need to be designed around the clients that publish and read sensitive events.

The 86 MB checkout and 1.59 million source lines give a rough sense of the code surface, not runtime cost. We measured no broker memory, disk throughput, request latency, or recovery time. Capacity advice copied from another company would be especially weak here because event size, retention, replication, producer behavior, and consumer lag change the answer. Benchmark the actual record shape and failure cases on the target infrastructure.

Kafka is also a poor default when the requirement is merely delayed work for a few processes. A simpler queue can offer acknowledgements and retries without forcing the team to reason about partition counts and retained logs. Kafka earns its operational bill when replay, several independent consumers, sustained event history, or the existing Kafka ecosystem are genuine requirements.

Active development does not remove the staffing requirement

GitHub recorded the last push on August 26, 2026, and listed 33,628 stars with 524 open issues and pull requests. The latest-release API returned no GitHub release, so release tags alone are not a useful health signal for this mirror. Current push activity and the visible issue and pull-request queue show ongoing work, while the combined open count should not be mistaken for 524 confirmed bugs.

Kafka deserves a shortlist for a company-wide event backbone because the protocol, clients, Streams API, and operating knowledge are widely available. It does not deserve automatic selection for every asynchronous job. The deciding evidence should come from the proposed event contracts, replay needs, failure model, and a workload test on hardware the team can actually operate.

Alternatives

ProjectWhat it isPick it when
Apache PulsarA distributed messaging and streaming system with separate compute and storage layers.pick this instead when multi-tenancy and independent storage scaling fit your operating model better than Kafka's log architecture.
RedpandaA Kafka-protocol-compatible streaming platform written around a different broker implementation.pick this instead when Kafka client compatibility matters but you want to compare a broker with a different deployment model.
NATS Server gh↗A compact messaging server with request-reply and persisted streams through JetStream.pick this instead when low operational weight and service messaging matter more than Kafka's ecosystem and log model.

What people are saying

  1. [velocity-scout] apache/kafka

Sources

  1. Apache Kafka repository and README
  2. Apache Kafka quickstart
  3. Apache Kafka documentation

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →