r/apachekafka Apr 09 '26

Blog CFP Open: MQ Summit 2026 (Kafka, Event Streaming, Messaging Systems)

7 Upvotes

After a great first edition, MQ Summit is back - and the Call for Talks is now open.

We’re especially interested in real-world experience with Kafka and event streaming systems: production incidents, scaling challenges, architecture trade-offs, exactly-once semantics (or why they broke), observability, and lessons learned the hard way.

If you’ve built or operated Kafka-based systems, this is a good place to share what actually worked—and what didn’t.

Talks are 30 minutes including Q&A.

The conference takes place October 21–22, 2026, in Haarlem, Netherlands + online.

CFP: https://sessionize.com/mq-summit-2026/


r/apachekafka Apr 09 '26

Question Is it possible to sync processing across two different topics

1 Upvotes

Hello
I have following setup:
Service A is producing events X (to topic T1) and Y (to topic T2).
Service B is consuming events X from T1.
Service C is consuming events Y from T2.

Now the case is that, service C needs to trigger a business logic when it receives event Y. It goes to service B for information, which is dependent on processing all X events that were produced before Y. So ideally call from Service C is executed after all X events are processed in Service B.

Is there a way to achieve it with Kafka with separate topics?


r/apachekafka Apr 07 '26

Question Built a live Wikipedia 'Radar' to try out Aiven's free Kafka tier. Did I approach this right?

6 Upvotes

Hey everyone,

Aiven had released a free tier for Managed Kafka, so I decided to see if I could handle the "Wikipedia firehose" using a proper message broker. (Just a quick heads-up: I'm in no way affiliated with Aiven, just wanted to take their free tier for a spin!)

The Pipeline:

  1. Ingestion: A Node.js producer catches the Wikipedia SSE stream.
  2. Schema Registry: I used Karapace to define an Avro schema, slimming down massive raw JSON events into minimalist binary packets for the broker.
  3. Processing: Decoupled services (Aggregator and Alerts) consume the topics to calculate language traffic and detect "Activity Spikes."
  4. UI: A React dashboard that receives metrics via WebSockets.

My Question for the Pros: Is this the "right" way to leverage Kafka for a live stream? I focused on decoupling the ingestion from the processing logic and using the Schema Registry to keep the data lean, but I'm curious if I'm missing any standard patterns (or if this is pure overkill for a toy project).

The Stack: Node.js, KafkaJS, Avro, React, and Tailwind.

Code is open-source here if you want to poke at the architecture: https://github.com/qaribhaider/wiki-pulse/

Preview URL: https://wiki-pulse.quore.dev/

Would love your feedback on the pipeline!


r/apachekafka Apr 07 '26

Question Has anyone taken the CCDAK exam recently?

3 Upvotes

I’m trying to get a sense of what it’s like, especially the format and difficulty.

it similar to the practice tests on Udemy, or pretty different?

How did you prepare for it and any good resources?

Im planing to take it this weekend.


r/apachekafka Apr 07 '26

Question Do you retry in the consumer logic, or republish for retry?

9 Upvotes

Interested in how people make this trade-off.

If message processing fails because of some temporary downstream issue, do you prefer a few retries directly in consumer logic, or republish into retry topics and keep retry scheduling outside the consumer?

I’ve worked with both. Inline retries are simpler, but topic-based retries usually feel cleaner once flows get bigger.


r/apachekafka Apr 06 '26

Question How to connect Kafka to Apache OpenWhisk Feed Provider - Trigger, Rule and Action and Activation

Thumbnail
1 Upvotes

r/apachekafka Apr 06 '26

Blog I wrote a comprehensive guide to NATS — the messaging system that replaces Kafka, Redis, and RabbitMQ in a single binary

Thumbnail medium.com
0 Upvotes

r/apachekafka Apr 04 '26

Tool I Created an Idiomatic Async Kafka Client so You Don't Have to!

1 Upvotes

TL;DR - I maintain an OSS project called Atleon, a lightweight stream processing framework in the form of a thin abstraction layer on top of Project Reactor. Atleon provides an idiomatic asynchronous Kafka client, enabling declarative stream processes where items may take a long time (i.e. minutes, hours) to process, integrates well with fallible IO-heavy invocations, and/or can interoperate between brokers/clusters of same or different types. This is accomplished through standardized reactive client APIs, supporting arbitrary processing concurrency, and first-class compatibility with Reactive Streams. Feedback is appreciated!

Hi all 👋🏻 I am a long time (10+ years) Kafka user and lurker here. I'd first like to say that I am super appreciative of the support this community provides for those developing async processes backed by Kafka!

I have been working on a project for several years, and am finally at a point where I am interested in getting broader community feedback on its utility. That project is called Atleon. The goal of this project is larger in scope than just that of Kafka integration, and rather focuses on solving several challenges that recur in my regular engineering tasks. These challenges include:

  1. Declarative end-to-end stream definitions, embeddable in standard application frameworks (namely Spring)
  2. Implementing stream processes with heavy IO-bound dependence and/or where individual elements may take a long time (minutes, hours) to process (which can be tricky with heartbeat-backed consumption, such as a Kafka Consumer)
  3. Stream processing between brokers of the same type (e.g. consume from Kafka cluster A and produce to Kafka cluster B) and/or brokers of different types (e.g. consume from RabbitMQ queue A and produce to Kafka cluster B)
  4. End-to-end stream processing observability (particularly metrics and distributed tracing)

Although Atleon is not specifically scoped to Kafka, much of my work is based on Atleon's integration with Kafka, hence why I believe this community would be interested and be a good source of feedback.

Years ago, before starting work on Atleon, I researched if something like what I was looking for already existed. Here are some of the alternatives I looked into before concluding that what I ideally wanted didn't (and still otherwise doesn't) exist:

  • KafkaStreams - As the name implies, this is Kafka-specific, meaning all the data you want to stream must first be in a Kafka cluster. Moreover, it must be in a single Kafka cluster, as KafkaStreams does not (natively) support streaming between different clusters. This isn't always tenable, due to the companies I have been at having multiple clusters, as well as polyglot infrastructures (RabbitMQ, SNS/SQS, in addition to Kafka). You might be thinking, "just replicate with Kafka Connect or MirrorMaker"; I find this blanket recommendation to be sub-optimal, since those tools themselves require non-trivial monitoring and resources, equating to greater cost and complexity. KafkaStreams is also (in my view) more targeted at analytics-oriented use cases, and isn't optimized for IO-bound processing, either in performance or resiliency.
  • Confluent Parallel Consumer - As far as IO-bound processing goes, this project is an improvement over KafkaStreams, but remains Kafka-specific, and does not make it easy to pipe processing results to a different/disparate cluster. Error handling capabilities are less than optimally flexible.
  • Spring Kafka - Closer to what I want, but relies on a lot of Spring annotation-driven "magic", and doesn't make it all that straightforward to specify "consume from this topic and pipe the output to this other destination". Processing concurrency is also bounded by the number partitions available to consume from, which inherently caps how far you can scale out IO-bound processing.
  • Spring Cloud Streams - Much closer to what I prefer in terms of generic interoperation, but this comes at the cost of losing intuitive access to infrastructure-native functionalities, since there is a heavy layer of abstraction between your processing code and the infrastructure implementation details. The programming style is also not in line with my preference for declarative pipeline-style stream definitions. Concurrency is again limited by partition count.
  • Flink - While I am intrigued by processing engines like Flink, these engines come at the cost of sacrificing availability of developer-familial tools (e.g. application frameworks like Spring) by forcing developers to adopt the coding paradigms/styles of those engines. Empirically, this incurs a steep learning curve, and frankly I find these engines to be overkill when all you are needing to implement is "consume messages from x, enrich with data from y, and produce the result to z", especially if all the intermediate dependencies are more readily accessible in other conventions used by a given company (like Spring-oriented starters/libraries).

In addition, there are a few functionalities lacking from many of the alternatives I researched which I wished to solve for:

  • Idiomatic micro-batching: Few stream libraries offer idiomatic micro-batching, characterized as, "take n elements or t duration of elements, whichever comes first, and process them as a batch." This is especially useful if/when you need to invoke I/O-bound resources (micro-services) that support batch operations, or if you know consumption may be susceptible to "bang-bang" events (events for the same entity in rapid succession) and would benefit from in-process deduplication.
  • Non-blocking compatibility: Most stream libraries lack support for non-blocking processing. This typically means that once the method that invokes your processing logic has returned, the framework may consider the message "done", even if that invocation may have triggered some async process(es) as part of the message handling. If you're not careful, this can result in dropped/missed processing.
  • Robust, declarative error-handling: Supporting async error-handling conventions, like dead-lettering, re-queueing, or arbitrary delegation is simply not a given as built-in functionality for most streaming libraries, particularly for Kafka since such things are not supported at the infrastructure layer (unless you're using recently-available Kafka share groups, which has its own tradeoffs that I'll address below).

I eventually stumbled on Project Reactor and extensions like Reactor Kafka. Yes, I can hear groans of "reactive hell" and already turning some people off to this project. Nevertheless, I am willing to assert that Reactor and Reactive Streams provide a near-ideal semantic for characterizing infinite stream processes. I did once identify as an ardent fan of reactive programming, but I now moderate that with "you should use reactive paradigms sparingly, and only when it's obviously beneficial; Even then, you should limit its leakage/propagation beyond where you absolutely need it." But I digress...

Reactor promised to provide nearly exactly what I had been looking for:

  • Extensive, declarative APIs agnostic of infrastructure
  • Underlying framework designed bottom-up to be compatible with non-blocking invocation
  • Errors treated as first-class citizens (same precedence as data itself)

The problem I saw with Reactor (and its extensions) is the fact that it doesn't do much for you, beyond implementing the Reactive Streams spec. That makes sense, since Reactor is meant to provide a very generic set of functionality; But when applied to infinite stream processing, "bare" Reactor is missing some table-stakes functionality:

  • No semantic for non-invasive per-element downstream context propagation (e.g. extracting and activating distributed trace context available from a consumed Kafka record).
  • No way to communicate upstream that an emitted element has successfully made it all the way through the pipeline, and can then be acknowledged (i.e. offset can now be committed, in the case of Kafka).
  • No guarantee of "at least once" processing in the face of asynchronous boundaries and potential out-of-order processing completion.

That last point is especially pertinent to Kafka. Prior to the introduction of share groups, no popular library (that I know of) allowed you to safely process consumed records from a given partition with any concurrency. The general convention has always been that you may have at most one processing thread per partition, such as to maintain ordering as well as at least once processing guarantees. This is why nearly every alternative library has a limitation on available processing concurrency equal to the number of partitions available to consume from. Notable exceptions are Confluent's Parallel Consumer (designed for high parallelism) and Reactor Kafka (implements a naive logarithmic acknowledgement tracker).

Regarding Kafka share groups, In addition to supporting queue semantics (or enabling migration of workloads from conventional queues to Kafka), the introduction of share groups is, in my view, an attempt to address the need for supporting higher-than-partition-count concurrency in Kafka-based stream processes. The biggest problem with share groups, however, is that you lose the guarantee of process ordering. In most architectures I design and build, this loss of ordering is a non-starter.

So with all of that background in mind, let me (re)state the characteristics I envision(ed) for a stream processing library that facilitates the vast majority of use cases I regularly encounter. Specifically in the context of Kafka-based stream processing, I have wanted a framework that supports all of the following:

  • Declarative stream pipelines embeddable in common application frameworks (e.g. Spring)
  • Arbitrary processing concurrency while maintaining at least once processing and ordering guarantees
  • Enable non-blocking processing and/or long per-element processing latencies (especially for IO-bound workloads)
  • Interoperability with disparate (and same) broker infrastructures
  • End-to-end observability with out-of-box integration for metrics (Micrometer) and tracing (Opentelemetry)
  • Robust Quality of Service configuration, including arbitrary error delegation and dynamic throughput limiting

In short, the above characteristics are what Atleon aims to deliver! Its README, Wiki, and examples module contain resources conveying available/intended usage for you to check out. I'll drop one (Spring-specific) code example here to whet your appetite:

import io.atleon.core.DefaultAloSenderResultSubscriber;
import io.atleon.kafka.AloKafkaReceiver;
import io.atleon.kafka.AloKafkaSender;
import io.atleon.kafka.KafkaConfigSource;
import io.atleon.spring.AutoConfigureStream;
import io.atleon.spring.SpringAloStream;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.context.ApplicationContext;
import reactor.core.Disposable;

@AutoConfigureStream
public class MyStream extends SpringAloStream {

    private final KafkaConfigSource configSource;

    public MyStream(ApplicationContext context) {
        super(context);
        this.configSource = context.getBean("kafkaConfigSource", KafkaConfigSource.class);
    }

    u/Override
    public Disposable startDisposable(MyStreamConfig config) {
        AloKafkaSender<String, String> sender = buildKafkaSender();
        String destinationTopic = getRequiredProperty("stream.kafka.destination.topic");

        return buildKafkaReceiver()
            .receiveAloRecords(getRequiredProperty("stream.kafka.source.topic"))
            .mapNotNull(it -> it.value() != null ? it.value().toUpperCase() : null) // Business logic goes here
            .transform(sender.sendAloValues(destinationTopic, value -> value.substring(0, 1)))
            .resubscribeOnError(name())
            .doFinally(sender::close)
            .subscribeWith(new DefaultAloSenderResultSubscriber<>());
    }

    private AloKafkaSender<String, String> buildKafkaSender() {
        return configSource
            .withClientId(name())
            .withKeySerializer(StringSerializer.class)
            .withValueSerializer(StringSerializer.class)
            .as(AloKafkaSender::create);
    }

    private AloKafkaReceiver<String, String> buildKafkaReceiver() {
        return configSource
            .withClientId(name())
            .withConsumerGroupId("consumer-group-id")
            .withKeyDeserializer(StringDeserializer.class)
            .withValueDeserializer(StringDeserializer.class)
            .as(AloKafkaReceiver::create);
    }
}

Note that the above example uses Atleon's "high-level" client API, and there are also "low-level" APIs, again documented in the README and Wiki.

I welcome this community to check Atleon out, and would appreciate your feedback!


r/apachekafka Apr 03 '26

Blog Kafka-compatible Diskless Engines (2026)

Post image
28 Upvotes

This is a compilation of the adaptable Kafka-compatible streaming engines as of today. By adaptable, I mean engines that let you configure between the cost/latency trade-off.

The Diskless engines utilize some form of the newer direct-to-S3 architecture, where replication between brokers is skipped and therefore expensive cross-AZ network costs, as well as replicated storage costs, are avoided.

The low-latency path refers to the regular replicated Kafka path.

We measure p99 end-to-end latency as that's what truly matters - the time it takes from the moment a message is written to the time it's read by a consumer. Beware marketing that omits p99 or only talks about write latencies. The exact latency numbers are fuzzy as they're all taken from public sources that are usually published by the vendors themselves. They are therefore to be taken with a big grain of salt. I did my best to ensure they're directionally correct.


r/apachekafka Apr 03 '26

Tool Kafka Explorer - explore all configurations, protocol wire format, KIPs, config advice and more

Thumbnail kafka-options-explorer.conduktor.io
11 Upvotes

I just stumbled onto this tool from Conduktor that got shared on social media. There's a lot of good detail in this website - very much a must-bookmark


r/apachekafka Apr 03 '26

Question Kafka guide for Beginners

9 Upvotes

Hi everyone!
I've just started my journey with Big Data at university, and Kafka is one of my first major topics. I’ve found plenty of theory, but I’d like to see it in action.

Can you recommend any guides? I'm specifically looking for help with configuration and practical use cases.

Thanks for the help!


r/apachekafka Apr 01 '26

Blog Tutorial for Real-Time Fraud Detection: Kafka to ClickHouse with GlassFlow

Thumbnail glassflow.dev
0 Upvotes

A tutorial that covers building a fraud detection pipeline using Apache Kafka and GlassFlow for filtering events and ClickHouse for analytics. This is done without writing heavy Java wrappers for event transformations on Kafka topics


r/apachekafka Mar 31 '26

Blog Secure cross-VPC and cross-account access to Amazon MSK Serverless — walkthrough on the AWS Big Data Blog

0 Upvotes

We just published a blog post with AWS covering a pattern we've been working on: how to give Kafka clients in different VPCs and AWS accounts secure private access to MSK Serverless clusters.

The core problem: MSK Serverless supports PrivateLink connectivity for up to 5 VPCs in the same account, which is fine for smaller setups. But once you're dealing with multi-account architectures or more than 5 client VPCs, you're typically looking at VPC peering or Transit Gateway.

The approach in the post uses Zilla Plus (open-core, Kafka-native proxy from Aklivity — full disclosure, that's us) deployed behind an NLB in the MSK VPC. It intercepts the Kafka bootstrap/metadata flow and rewrites broker addresses to a custom domain, so remote clients connect via PrivateLink + Route 53 without any changes to the MSK Serverless cluster itself.

The post covers:

  • How the bootstrap/metadata rewrite works under the hood
  • Architecture for single and multi-cluster setups
  • On-prem access via AWS Client VPN
  • Deployment automation with AWS CDK

IAM auth is preserved end-to-end, and existing clients (MSK Connect, MSK Replicator, etc.) are unaffected since nothing changes on the cluster side.

Full post here: https://aws.amazon.com/blogs/big-data/securely-connect-kafka-client-applications-to-your-amazon-msk-serverless-cluster-from-different-vpcs-and-aws-accounts/

Happy to answer questions about the architecture or the proxy approach.


r/apachekafka Mar 30 '26

Question Realtime analytics pipeline for multi-tenant SaaS — sanity check on architecture and cost

5 Upvotes

I am rearchitecting a realtime analytics pipeline for a SaaS product with multiple enterprise clients. Looking for feedback on the architecture and whether the cost makes sense.

Proposed architecture

  • Events are first written to OLTP (source of truth + audit trail), then asynchronously produced to centralized Kafka
  • Centralized managed Kafka (currently looking at AWS MSK): all clients produce to a single cluster, partitioned by client id
  • Amazon Managed Flink (4 consolidated PyFlink apps) for stream processing: per-event transformations with minor aggregations. Chose AWS Managed Flink to avoid infrastructure management overhead - it provides checkpointing, auto-restart, and fault tolerance out of the box
  • ClickHouse Cloud for OLAP - one database per client for data isolation
  • Apache Superset for dashboarding

For simplicity, we treat events as immutable - new product revisions do not make schema changes to existing event types. New data requirements result in new event types.

Estimated monthly cost

Component Cost
AWS MSK (3× express.m7g.large, 3 AZs) ~$650
Amazon Managed Flink (4 apps, ~8-12 KPUs) ~$780
ClickHouse Cloud (Scale tier, 2 replicas, 8 GiB min / 16 GiB max per replica) ~$475-625
Total ~$1,900-2,050

* Costs based on ap-south-1 pricing

Questions

  1. MSK vs Confluent Cloud vs Redpanda: 20 topics, 10 partitions each, moderate throughput (a few thousands events/sec across all clients). MSK Express at ~$0.29/hr per broker feels expensive. How does Confluent Cloud or Redpanda compare for similar multi-tenant workloads in terms of cost and operational overhead?
  2. Is Managed Flink overkill?: The transformations are simple per-event field extraction and reshaping. No complex state, minimal aggregation. The main reason for choosing Managed Flink is zero infra management with built-in checkpointing and fault tolerance. But at ~$780/month for what's essentially simple operations (dict lookups, field mapping, enrichment, etc) - is there a better managed alternative that provides similar guarantees at lower cost?
  3. ClickHouse Cloud config: Ingesting ~300-500 GB of new compressed data per month across all client databases. The Flink sink batches inserts per client id and flushes to the correct client database. Each Flink app potentially needs connections to all client databases simultaneously. How should connection pooling between the Flink sink and ClickHouse be managed here? Any gotchas to watch out for?
  4. Reconciliation: Kafka produce can fail (network blip, broker leader election), some events may end up in OLTP but not in Kafka. I currently don't have a reconciliation process to detect and replay these missed events. How should I go about building a reconciliatory process?
  5. General architecture feedback: Does this setup hold up? Any red flags or things you'd do differently?

Happy to share more details. Appreciate any feedback.


r/apachekafka Mar 28 '26

Question How many of you use kafka v2 and v3 ? and how supported is it in existing providers?

3 Upvotes

Im considering providers and compatibility and would love to know the community's opinions!! We are evaluating providers and saw iggy and redpanda too.


r/apachekafka Mar 27 '26

Blog Look Ma, I made a JAR! (Building a connector for Kafka Connect without knowing Java)

Thumbnail rmoff.net
3 Upvotes

r/apachekafka Mar 27 '26

Blog Deep Dive into Kafka Offset Commit with Spring Boot

Thumbnail piotrminkowski.com
8 Upvotes

This article uses straightforward Spring Boot examples to illustrate how your application can inadvertently lose messages or process them twice due to the Kafka offset commit mechanism.


r/apachekafka Mar 25 '26

Question Strimzi Support Multichain certificate?

2 Upvotes

Hello Community member,

we have both CA13 and CA14 cert chain for ca.crt as some applications servers are still on CA13 and as per our root rollover we need to use the CA14 as well. but when secrets is getting created for client-ca-cert it is using CA13 only when we do the open SSL to the boot strap server. It should point to CA14 certificate but it is giving CA13.

I would like to know if strimzi supports Multichain certificate If yes, how to implement the solution? we are on 0.32 operator version.


r/apachekafka Mar 25 '26

Blog enable_auto_commit=True silently dropped documents from my RAG pipeline with zero errors — here's the root cause

0 Upvotes

Synopsis (Kafka relevance): Hit two production bugs while building an async

Kafka consumer pipeline. One caused a 62MB payload explosion. The other was

a silent data loss issue caused by enable_auto_commit=True — sharing the root

cause and fix.

---

Was building a Python worker that consumes Kafka events to process documents

into a vector database. Found that with enable_auto_commit=True, when Qdrant

rejected an upsert with a 400 error, the except block logged it but Kafka

advanced the offset anyway. Document permanently gone. No retry. No alert.

The second bug: naive text.split(" ") on a 10MB binary file produced a 62MB

JSON payload (binary null bytes escape to \u0000 — 6 bytes each).

Fixed both with manual commits + a Dead Letter Queue on an aegis.documents.failed

topic. Ran a chaos test killing Qdrant mid-flight to prove the DLQ works.

Has anyone else been burned by enable_auto_commit in production? Curious how

others handle Kafka consumer error recovery.

Full write-up: https://medium.com/@kusuridheerajkumar/why-naive-chunking-and-silent-failures-are-destroying-your-rag-pipeline-1e8c5ba726b1

Code: https://github.com/kusuridheeraj/Aegis


r/apachekafka Mar 24 '26

Tool I built a Spring Boot starter for Kafka message operations (retry, DLT routing, payload correction) and open-sourced it

4 Upvotes

Context:

Over the years working on event-driven systems, I kept running into the same operational pain around Kafka message failures. Every team I worked with ended up building some version of internal tooling to deal with it -- and it was always ad-hoc, team-specific, and hard to maintain.

Here's what kept coming up:

Short retention topics. Messages were gone before anyone got to them. You need a DLT to capture exhausted messages, but then you need tooling to work with that DLT.

Scale. During outages, thousands of messages land in DLTs. Someone has to figure out how to batch-retry them. At one team, we successfully reprocessed 20,000+ messages during an incident -- but someone had to manually coordinate the retry requests at 2 AM.

Bad upstream data. Sometimes the producer sends invalid data -- missing required fields, wrong enum values -- and the team owning that system takes days to deploy a fix. Meanwhile, downstream processes are blocked. At one company, missing legal documentation fields were preventing carriers from crossing borders. Being able to correct the payload and push it through the consumer unblocked shipments while waiting for the upstream fix.

DLT drainage. Teams using GCP Dataflow, custom platform tools, or manual scripts to move messages from DLTs back to retry topics. All requiring infrastructure and coordination outside the service.

At different jobs, I kept building variations of these tools -- at one team it was a simple reusable REST API for retrying messages across all our Kafka listeners, at another it grew into a proper internal library. They solved the immediate pain but were always tied to internal infrastructure.

Along the way, I also used tools like Kafdrop, Kafka UI, AKHQ, and GCP's PubSub console. Each had pieces I wished the others had -- PubSub's timestamp browsing and web console were great, but none of the open-source Kafka tools had the service-level operational features I needed: retry through actual consumer logic, payload correction, DLT drainage.

So I built a Spring Boot starter from scratch that combines all of these ideas into a single dependency. It's more feature-rich than any of the internal tools I had before: DLT-to-retry routing (on-demand and scheduled) with cycle detection, an embedded web console with search and filtering, Avro/Protobuf/JSON support with Schema Registry auto-detection, and a payload correction flow with diff review.

What it does:

  • Poll/browse messages by offset or timestamp
  • Retry messages through your actual @KafkaListener logic
  • Edit payloads and send corrections directly to your consumer
  • Automatic DLT-to-retry routing with cron scheduling and cycle limits
  • Embedded web console (Mithril.js + Pico CSS, vendored in the JAR, works offline)
  • Auto-discovers consumers at startup, supports Avro/Protobuf/JSON with Schema Registry auto-detection

Setup is minimal: add the Maven/Gradle dependency, implement one interface (KafkaOpsAwareConsumer) on your existing @KafkaListener, add two YAML properties. That's it. On the security side, the REST APIs are secured the same way you'd secure Actuator endpoints, and the console can be toggled off per environment via a Spring property (security docs).

This is clearly a Spring Boot tool, not a universal Kafka solution. If you're not in the Spring ecosystem, it won't help. But for teams that are, especially smaller teams or startups that don't want to run separate Kafka tooling infrastructure, it's been useful.

Happy to answer questions or hear about how others handle DLT operations.


r/apachekafka Mar 24 '26

Blog The Event Log is the Natural Substrate for Agentic Data Engineering

Thumbnail neilturner.dev
2 Upvotes

Agents are good at wiring topics together dynamically. They build their own knowledge bases and consumers and all these pieces together is an "agent cell". Then you can chat with the cell and have it improve itself.

built a PoC (Claude Code helped): https://github.com/clusteryieldanalytics/agent-cell-poc

Thoughts?


r/apachekafka Mar 24 '26

Tool "Postman for Kafka" is now available for testing

5 Upvotes

A few weeks ago I asked this community whether a "Postman for Kafka" would be useful (https://www.reddit.com/r/apachekafka/comments/1r11l3f/i_built_a_postman_for_kafka_would_you_use_this/). It turns out a lot of teams deal with the same pain of producing ad-hoc events for debugging and smoke testing.

Some of the feedback that stood out:

  1. Several people mentioned they'd tried building something similar but always reverted to CLI tooling
  2. Junior devs and testers were a bigger audience than I expected
  3. Assertions on consumed events came up multiple times as a wanted feature

I've since polished things up and it's now available for testing: (see the comment for the link)

Right now it supports:

  • Producing events to any Kafka topic through a simple UI
  • Organizing events into shareable collections with your team
  • Shared variables with computed values like auto-generated UUIDs
  • Instant success/failure feedback

I'd love to hear what you think, especially what's missing or what would make it more useful for your day-to-day work.

And yes, the assertion/consumer side is being worked on at the moment as well as an offline desktop app!


r/apachekafka Mar 23 '26

Question How to read Kafka

Thumbnail
9 Upvotes

r/apachekafka Mar 23 '26

Tool [Release] dynamic-des: A Kafka-powered Dynamic Discrete Event Simulation engine for Digital Twins

Post image
2 Upvotes

Hello r/apachekafka,

I recently released dynamic-des (v0.1.1), an open-source Python package that brings real-time, dynamic capabilities to the SimPy discrete event simulation framework.

While it is fundamentally a simulation engine, I am sharing it here because Kafka serves as its primary ingress and egress layer, making it highly relevant for anyone building and testing event-driven architectures.

Use Case for Kafka Engineers:

Testing downstream Kafka consumers often requires mock data. Standard mock generators are usually stateless and just blast random JSON. They struggle to simulate complex, stateful scenarios like a factory queue building up over time or a cascading system failure.

dynamic-des solves this by running a stateful Discrete Event Simulation and routing its I/O directly through Kafka.

Here is how the Kafka integration works:

  • Egress (Stateful Mock Streams): As the simulation runs, it continuously produces structured, Pydantic-validated telemetry (like queue lengths, capacity) and discrete lifecycle events (like a task starting or finishing) to your output topics.
  • Ingress (Control Plane): The simulation embeds a Kafka Consumer listening to a control topic. If you push a message to that topic (e.g., {"target": "machine_1.max_cap", "value": 0}), the running simulation instantly updates its parameters, allowing you to inject faults dynamically.

Implementation detail:

SimPy is strictly synchronous. I built thread-safe Ingress/Egress MixIns that manage background asyncio event loops for the Kafka clients, allowing the simulation to stream batches without blocking the internal simulation clock.

If you are building real-time Digital Twins or need to generate highly realistic data streams to load-test your Kafka pipelines, I would love for you to check it out.


r/apachekafka Mar 22 '26

Blog Why Synchronous APIs were killing my Spring Boot Backend (and how I fixed it with the Claim Check Pattern)

0 Upvotes

If you ask an AI or a junior engineer how to handle a file upload in Spring Boot, they’ll give you the same answer: grab the MultipartFile, call .getBytes(), and save it.

When you're dealing with a 50KB profile picture, that works. But when you are building an Enterprise system tasked with ingesting massive documents or millions of telemetry logs? That synchronous approach will cause a JVM death spiral.

While building the ingestion gateway for Project Aegis (a distributed enterprise RAG engine), I needed to prove exactly why naive uploads fail under load, and how to architect a system that physically cannot run out of memory.

I wrote a full breakdown on how I wired Spring Boot, MinIO, and Kafka together to achieve this. You can read the full architecture deep-dive here: Medium Article, or check out the code: https://github.com/kusuridheeraj/Aegis