From Kafka

Run in parallel.
Switch when you’re ready.

Prepare KubeMQ alongside your existing Kafka environment. Copy topic history, map consumer positions and validate the target while your source continues serving applications. Then move each workload in a coordinated cutover.

Explore the migration flow ↓

During migration · both environments running

Your production applications
Serving existing workloadsKafka
kmq migrateRead source · copy records · map offsets
KubeMQRunning alongside · ready for validation

Source stays in place. You choose the cutover.

Two environments. One controlled transition.

Build the new path.
Keep the current one running.

Replication and validation happen alongside your source environment. The application switch is a separate, deliberate step.

01 / Existing environment

Kafka keeps serving.

Your producers and consumers stay connected to the source during preparation. The migration tool reads source topics without producing records, committing source offsets or joining source consumer groups.

Production traffic stays here during preparation
Copy recordsMap offsets
02 / Target environment

KubeMQ runs alongside.

Topic records are written into KubeMQ with their keys, values, headers and source partition preserved. Validate application behavior and throughput on the target before moving production traffic.

Test the target before committing to the switch

Bring over a workload. Then the next.

Use --topic to scope record copying. Group related producers, topics and consumers into a migration wave, then repeat for the next independent workload.

A coordinated final step.

At cutover, coordinate producers, pause the selected consumers, complete the remaining copy and seed translated offsets before reconnecting them to KubeMQ.

Check eligibility before copying.

These constraints apply to the KubeMQ migration tools.

Migration assessment and commands ↗

Inside the kmq CLI

Four commands.
A traceable path to production.

Each phase has a specific job. All migration writes go to the KubeMQ target; the source is read-only to the tools.

  1. 1

    Assess the source

    kmq migrate assess

    Inspect topic configuration and consumer groups. Get per-topic fitness results so you can select the first migration wave and address compatibility requirements up front.

    OutputA topic-level migration assessment.
  2. 2

    Replicate the records

    kmq migrate replicate

    Copy in parallel. Catch up before you switch. Each run copies records up to the source offsets captured at its start. Run it again to catch up with new records while Kafka stays active. Copy history into the corresponding target partitions. A local state file tracks copied positions and the source-to-target offset map. Re-run with the same state file to resume copying and bring over additional records.

    OutputTopic history on KubeMQ, plus a persisted offset map.
  3. 3

    Preview consumer positions

    kmq migrate translate

    See where each consumer group will resume on the target. This read-only preview translates committed offsets using the recorded map, giving your team a checkpoint before cutover.

    OutputTarget resume positions you can review before writing them.
  4. 4

    Cut over the workload

    kmq migrate cutover

    With the selected source and target consumer groups inactive, verify replication has reached the committed positions and seed their target offsets. Update client endpoints and authentication settings, then resume consumers on KubeMQ.

    OutputConsumers resume from mapped positions on KubeMQ.
Open the migration guide — commands, authentication and examples ↗

Consumer continuity

Your history moves.
Your consumers keep their place.

Kafka and KubeMQ can assign different offsets to a record. The migration tools record the correspondence so consumers resume from the mapped target position.

Example · same record, different offsets
Kafka / partition 0 / 1042KubeMQ / partition 0 / 876
  • Configure your target before copyingSet retention and other topic settings in KubeMQ before migration. For existing target topics, verify that partition counts match the source.
  • Record contents preservedKeys, values, headers and original CreateTime are copied. Source partition assignments are retained.
  • Progress saved between runsThe migration state file persists copying progress and offset mappings. Copying is resumable and at-least-once.
  • Readiness checked before seedingCutover checks that copying has reached the group’s committed offsets on every partition before writing resume positions.
  • Familiar Kafka clientsSupported clients connect directly to KubeMQ’s Kafka listener after cutover. The migration tool is separate from that application connection.

Practical answers.
A smoother move.

How do Kafka and KubeMQ run in parallel?

Deploy KubeMQ alongside the source and use the migration tools to copy records into it. Existing applications continue using Kafka during preparation while you validate KubeMQ separately. Re-run replication with the same state file to copy additional records, then coordinate the final catch-up and client switch for each workload.

What changes for our applications?

For supported Kafka clients and features, keep your existing client library and application code. Change bootstrap.servers to KubeMQ and configure the target’s authentication. The assessment and a staged test identify any workload-specific adjustments before production cutover.

Explore Kafka workload compatibility ↗
How do we keep the transition smooth for customers?

Do the copying and validation ahead of the switch. Choose a cutover window for the selected workload, coordinate its producers and pause its consumers for the final catch-up and offset seeding. Resume on KubeMQ and verify processing before expanding to the next wave. This concentrates the production change into a planned step rather than the entire migration period.

How is copying progress protected?

Use a target running the replicated storage engine used by new installations with strict acknowledgment policy, and retain the migration state file. Copying is resumable and at-least-once: a crash between target acknowledgment and saving the offset map can cause a record to be copied again. Include duplicate handling in your application validation.

What should we verify before moving the next workload?

Confirm a producer can write and a consumer can read through the KubeMQ Kafka listener. Check that migrated consumer groups resume at the positions shown in the translation preview, then compare processing behavior, throughput and latency with your acceptance criteria.

Follow the post-cutover checks ↗
Can we keep the original environment during the transition?

Yes. The migration tools leave source records and committed offsets untouched, so you can retain the original environment while validating each wave. Plan how to handle any new records written after cutover if you need to return traffic to the source; those target writes are not automatically copied back.

Let’s map your first
migration wave.

Bring your topics, consumer groups and throughput requirements. We’ll help plan the parallel setup and cutover.

Start with your Kafka workload.

Try KubeMQ in one command

No signup. One standalone container. A 14-day evaluation on an empty data volume.

docker run -d --name kubemq -p 50000:50000 -p 9090:9090 -p 8080:8080 -p 9092:9092 -p 5672:5672 -v kubemq-data:/kubemq/store europe-docker.pkg.dev/kubemq/images/kubemq-next:latest

Open the dashboard and connect Kafka clients to localhost:9092. Keep the named volume when replacing the container.

Kubernetes and clusters require a license key. Starting a new evaluation on existing data also requires a key. Request a 30-day trial key. Both evaluation and trial servers need outbound HTTPS to license.kubemq.io; they refresh a 24-hour lease hourly.

By running, you accept the evaluation terms, including required usage reporting. Send your first Kafka message →

Talk to KubeMQ

Let’s find your fit.

A little context helps us make this conversation useful.

Step 1 of 2

What would you like to explore?

Prefer email? [email protected]

Your privacy choices

Essential services · Always active

Required for hosting, security and remembering your privacy choice. No advertising or analytics trackers are active.

Allow Vimeo videos to load. Vimeo receives your IP address and may use cookies. You can change this choice at any time.

Disabling videos stops them on this page. It cannot undo information already shared or remove Vimeo cookies; manage those in your browser settings.

Read our privacy notice