blob: dca23239540ce055a5789f970dd51ad9fafc0bdc [file] [log] [blame]
== Camel Kafka example
=== Introduction
An example which shows how to integrate Camel with Kafka avro to make use of avro serialize/deserializer
First a kafka server should be started:
----
$ ./bin/schema-registry-start etc/schema-registry/schema-registry.properties
----
Then start confluent schema registry:
register_schema.py is simple custom python script to register the employee.avsc schema in confluent schema registry:
----
$ python3.6 src/main/resources/register_schema.py http://localhost:8081 employees-avro src/main/resources/avro/employee.avsc
Schema Registry URL: http://localhost:8081
Topic: employees-avro
Schema file: src/main/resources/avro/employee.avsc
Success
----
----
$ curl --noproxy '*' http://localhost:8081/subjects/employees-avro-value/versions/1
{"subject":"employees-avro-value","version":1,"id":2,"schema":"{\"type\":\"record\",\"name\":\"Employee\",\"namespace\":\"com.example.kafkatutorials\",\"fields\":[{\"name\":\"firstName\",\"type\":\"string\"},{\"name\":\"lastName\",\"type\":\"string\"},{\"name\":\"birthDate\",\"type\":\"long\"}]}"}
----
To delete:
----
$ curl -X DELETE http://localhost:8081/subjects/topic-value/versions/version-no
----
=== Preparing Kafka
This example requires that Kafka Server is up and running.
$ ${KAFKA}/bin/zookeeper-server-start.sh ${KAFKA}/config/zookeeper.properties
$ ${KAFKA}/bin/kafka-server-start.sh ${KAFKA}/config/server.properties
You will need to create following topics before you run the examples.
On windows run
$ ${KAFKA}/bin/kafka-topics.bat --create --zookeeper <zookeeper host ip>:<port> --replication-factor 1 --partitions 1 --topic employees-avro
On linux run
$ ${KAFKA}/bin/kafka-topics.sh --create --zookeeper <zookeeper host ip>:<port> --replication-factor 1 --partitions 1 --topic employees-avro
=== Build
You will need to compile this example first:
$ mvn compile
=== Run
Run the consumer first in separate shell
$ mvn spring-boot:run
camel-context.xml file has both kafka-producer and kafka-consumer routes defined to produce/consume messages to topic my-topic.
Press `Ctrl-C` to exit.
=== Configuration
You can configure the details in the file:
`src/main/resources/application.properties`
You can enable verbose logging by adjusting the `src/main/resources/log4j2.properties`
file as documented in the file.
=== Help and contributions
If you hit any problem using Camel or have some feedback,
then please https://camel.apache.org/support.html[let us know].
We also love contributors,
so https://camel.apache.org/contributing.html[get involved] :-)
The Camel riders!