This is a Kafka MirrorMaker message handler to copy Avro schemas between schema registries.
Arguments that can be passed to the message handler:
Name | Description | Required | Default |
---|---|---|---|
sourceUrl | Source schema repository URL | Yes | |
targetUrl | Target schema repository URL | Yes | |
includeKeys | Include message key schema | No | False |
whitelist | Whitelist topics | No | |
subjectNameStrategy | Subject name strategy | No | topicNameStrategy |
subjectNameStrategy
possible values:
topicNameStrategy
topicRecordNameStrategy
recordNameStrategy
Run Kafka MirrorMaker maker as follows:
$ kafka-mirror-maker [...] \
--message.handler=com.nicovogelaar.kafka.mirrormaker.SchemaRegistryTransfer \
--message.handler.args=sourceUrl=http://schema-registry-1:8081,targetUrl=http://schema-registry-2:8081,subjectNameStrategy=topicNameStrategy
Run the following commands to build the message handler, run a Kafka cluster with generated data and to start Kafka MirrorMaker to see whether the schema is being copied.
- Build message handler:
$ ./gradlew clean jar
- Start Kafka clusters:
$ docker-compose -f ./docker-composition/clusters.yml up
- Start Kafka MirrorMaker once the clusters are up and running:
$ docker-compose -f ./docker-composition/mirror-maker.yml up --build --force-recreate
I used the following project as a reference: