karthikeyan-ng/learn-and-apply-apache-kafka

Repository files navigation

Mac

  • Make sure you are navigated inside the bin directory.
  • Start up the Zookeeper.
./zookeeper-server-start.sh ../config/zookeeper.properties
  • Add the below properties in the server.properties
listeners=PLAINTEXT://localhost:9092
auto.create.topics.enable=false
  • Start up the Kafka Broker
./kafka-server-start.sh ../config/server.properties
./kafka-topics.sh --create --topic test-topic -zookeeper localhost:2181 --replication-factor 1 --partitions 4

Here, test-topic is a topic name. Here --replication-factor 1 refers to how many ZooKeeper replicates for this topic. Here --partitions 4 refers to how many partitions you would like to create for this topic.

./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic --property "key.separator=-" --property "parse.key=true"
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning -property "key.separator= - " --property "print.key=true"
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --group <group-name>

Windows

  • Make sure you are inside the bin/windows directory.
  • Start up the Zookeeper.
zookeeper-server-start.bat ..\..\config\zookeeper.properties
  • Start up the Kafka Broker.
kafka-server-start.bat ..\..\config\server.properties
kafka-topics.bat --create --topic test-topic -zookeeper localhost:2181 --replication-factor 1 --partitions 4
kafka-console-producer.bat --broker-list localhost:9092 --topic test-topic
kafka-console-producer.bat --broker-list localhost:9092 --topic test-topic --property "key.separator=-" --property "parse.key=true"

TIP

  • Here the parameter --property "key.separator=-" is to identify the message key character. In this case it's - (Hyphen).
  • Here the parameter --property "parse.key=true" is to parse the key and send it to the corresponding partition.
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-topic --from-beginning
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-topic --from-beginning -property "key.separator= - " --property "print.key=true"

TIP:

  • Here --from-beginning is a parameter where it will request consumer to consume messages from the beginning of the given topic test-topic.
  • If you don't specify --from-beginning your new messages will be displayed in any order. Because, those messages are stored in different partitions.
  • Message ordering is guaranteed at the partition level
  • If you want to consume messages which is stored in the specific key partition, use -property "key.separator= - "
  • When you print message with key then use this property --property "print.key=true"
kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test-topic --group <group-name>

  • The first step is to add a new server.properties.

  • We need to modify three properties to start up a multi broker set up.

broker.id=<unique-broker-d>
listeners=PLAINTEXT://localhost:<unique-port>
log.dirs=/tmp/<unique-kafka-folder>
auto.create.topics.enable=false
  • Example config will be like below.
broker.id=1
listeners=PLAINTEXT://localhost:9093
log.dirs=/tmp/kafka-logs-1
auto.create.topics.enable=false
  • Provide the new server.properties thats added.
./kafka-server-start.sh ../config/server-1.properties
./kafka-server-start.sh ../config/server-2.properties
Mac

./kafka-topics.sh --zookeeper localhost:2181 --list
  • The below command can be used to describe all the topics.
./kafka-topics.sh --zookeeper localhost:2181 --describe
  • The below command can be used to describe a specific topic.
./kafka-topics.sh --zookeeper localhost:2181 --describe --topic <topic-name>
./kafka-topics.sh --alter --zookeeper localhost:2181 --topic library-events --config min.insync.replicas=2
./kafka-topics.sh --zookeeper localhost:2181 --delete --topic test-topic
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group console-consumer-27773
./kafka-run-class.sh kafka.tools.DumpLogSegments --deep-iteration --files /tmp/kafka-logs/test-topic-0/00000000000000000000.log
./kafka-configs.sh --alter --zookeeper localhost:2181 --entity-type topics --entity-name test-topic --add-config min.insync.replicas=2

Windows

  • Make sure you are inside the bin/windows directory.
kafka-topics.bat --zookeeper localhost:2181 --list
  • The below command can be used to describe all the topics.
kafka-topics.bat --zookeeper localhost:2181 --describe
  • The below command can be used to describe a specific topic.
kafka-topics.bat --zookeeper localhost:2181 --describe --topic <topic-name>
kafka-topics.bat --alter --zookeeper localhost:2181 --topic library-events --config min.insync.replicas=2
kafka-topics.bat --zookeeper localhost:2181 --delete --topic <topic-name>
kafka-consumer-groups.bat --bootstrap-server localhost:9092 --list
kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group console-consumer-27773
kafka-run-class.bat kafka.tools.DumpLogSegments --deep-iteration --files /tmp/kafka-logs/test-topic-0/00000000000000000000.log

Install "Spring Assistant" plugin in IntelliJ IDE

About

Learn and Implement Simple Kafka broker using Spring Boot to publish and consume message

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages