Repository navigation
Proposal: a Claude Code skill for migrating from Confluent.Kafka to Dekaf #3477
Replies: 1 comment
|
A follow-up on candidates for further validation runs. If this direction is useful, these are the projects I'd run the skill on next, each compared against its original Confluent build: With integration tests (they check output with Confluent.Kafka, so a green run proves interoperability):
Real-world code without Kafka tests:
Libraries and transports (not yet checked): Topos, Orleans.Streams.Kafka, Akka.Streams.Kafka, Brighter, Wolverine and MassTransit's Kafka rider. The rest of Confluent's examples: the Schema Registry ones (Avro, Protobuf, JSON Schema), Stop tests: KafkaFlow and Silverback wrap Confluent.Kafka too deeply for a migration; the skill should recognise that and stop. My suggested order would be kafka-retry-job, the Schema Registry examples, CoreWCF, then CAP. Happy to take requests if there are projects you'd rather see. |
Uh oh!
There was an error while loading. Please reload this page.
@thomhurst
I've been working on making migrations from Confluent.Kafka easier, and I'd like to know whether you'd want this in Dekaf, and if so, how you'd like me to proceed.
The idea
A Claude Code skill that takes an agent through a migration using the existing guide (
migrating-from-confluent-kafka.md). The skill holds the procedure and the docs stay the source of facts. It:It would ship as a plugin from this repo, so users would install it with:
That adds
.claude-plugin/marketplace.jsonandplugins/dekaf/skills/migrate-from-confluent-kafka/SKILL.md(about 200 lines), plus a short "Migrating with Claude Code?" box in the guide.Validation so far
Each run used a fresh agent with only the skill and the docs, against Kafka 4.1, compared with the original Confluent build:
examples/Producerexamples/Consumerexamples/ExactlyOncesrc/Kafka(library)A way to find problems, too
Running the skill on existing projects turned out to be a good test of Dekaf itself. Each run compares the migrated code against the original Confluent build, so every difference shows up as a gap in the guide, a gap in the skill, or a Dekaf bug. These four runs found two real bugs and several doc errors. Running it on more open-source projects that use Confluent.Kafka would keep sharpening the skill and keep surfacing migration issues and bugs before users hit them.
What it surfaced
Docs (I have fixes ready):
partitioning.mdsays the key hash matches librdkafka (librdkafka defaults to CRC32consistent_random); the native consumer'sReadUncommitteddefault versus librdkafka'sread_committed; session timeout under KIP-848;Partitions/PositionsAPI names; plus about 20 smaller rows for the migration guide's API map.Possible Dekaf issues, confirmed unless marked:
InvalidTxnState(librdkafka and Java complete it locally). This crashes timer-based consume-transform-produce loops. Repro is ten lines.Partitioneris absent, so keys move partitions after migrating.WithMaxRequestSize,WithMaxPollIntervalandWithRebalanceTimeoutare internal, so records over 1 MB and long rebalance callbacks need the adapter.SeekToBeginningpositions at offset 0, not the log start; with the defaultLatestreset, a trimmed partition skips to the end. (To reproduce.)traceparent/tracestateheaders when tracing listens; there's no opt-out.start-kafka.shruns Kafka 3.5; noisy warning logs during broker restarts.How would you like to proceed?
I have a current version of the skill and a detailed list of the issues, each with its cause, source references and a reproduction or how to reproduce it, ready to share or push to my fork. Happy to adjust any of it.
All reactions