Kafka Create Topic – How To Create Apache Kafka Topics

Kafka Create Topic – How To Create Apache Kafka Topics. Creating Kafka topic is a fundamental step in using Apache Kafka for building data driven applications and real time data processing pipelines. They play a crucial role in seamlessly organizing, ingesting, distributing, and processing data. With their exceptional scalability, fault tolerance, and real time prowess, Kafka topics form the backbone of robust and agile systems. In this tutorial, we walk you through a step-by-step tutorial about Kafka Create Topic – How To Create Apache Kafka Topics.

What is a Kafka Topic?

In Apache Kafka, a topic is a category or feed name to which records (messages) are published. It serves as a logical channel for organizing and categorizing the data that gets ingested into the Kafka system. Topics are crucial to the Kafka publish-subscribe messaging model, where producers write data to topics, and consumers read from those topics.

When you, a producer, send messages or events to a specific Kafka Topic, these topics append the messages one after another, essentially creating a log file. As a result, you push messages into the tail of these logs, while consumers, on the other hand, pull messages from a particular Kafka Topic. Creating Kafka Topics allows you to achieve logical segregation between messages and events, much like how different tables hold various types of data in a database.

In your Kafka setup, you have the freedom to create as many topics as you need to suit your specific use cases. Just remember that each topic requires a unique and identifiable name to differentiate it across different Kafka Brokers within the Kafka Cluster.

Advantages of Kafka Topics

  • Allow data to be logically segmented based on specific themes, categories, or data streams
  • Topics are partitioned across multiple brokers, allowing for horizontal scalability and high throughput. 
  • Kafka topics retain messages for a configurable period, allowing consumers to consume past data, if required. 
  • Ensures data availability and fault tolerance through topic replication. 
  • Supports multiple consumer groups, enabling multiple subscribers to independently consume messages from the same topic. 
  • Excels at real time event streaming, making them ideal for building event-driven architectures and applications that require instant data processing and response.
  • Provides a decoupling mechanism between producers and consumers. 
  • May be partitioned based on the data volume and processing requirements. Allows for parallel processing of data across partitions, optimizing the performance of data consuming applications.
  • Supports dynamic topic creation, meaning topics are created on the fly.

How to Create Apache Kafka Topics

Create Kafka topics in two ways: automatically or manually. We advise you to manually create all input/output topics before starting your application, rather than relying on the automatic process. While we’ve used Ubuntu, you follow the same process Windows or other Linux distributions.


  • Kafka Cluster Setup: Ensure that you have a running Kafka cluster with at least one broker. A Kafka cluster consists of multiple brokers working together to store and manage topics.
  • ZooKeeper: Kafka relies on ZooKeeper for managing cluster metadata. Make sure that ZooKeeper is up and running and accessible to the Kafka brokers.
  • Access to Kafka command-line tools (e.g., kafka-topics.sh).

Start the Kafka Server

Open the terminal or command prompt and navigate to the Kafka installation directory using the cd command. Here, ~/kafka_home represents the path to the Kafka folder within your home directory. Adjust the command as needed based on your actual Kafka installation location. Once you execute this command, you’re ready to interact with Kafka’s command-line tools and configuration files.

					cd ~/kafka_home

Next, start Apache ZooKeeper. Kafka relies on ZooKeeper to manage its cluster metadata, so it needs to be up and running before you create a topic. If you don’t have one running, don’t worry. Well, Kafka provides a convenient pre-packaged script that allows you to set up a simple single-node ZooKeeper instance quickly and easily. 

					bin/zookeeper-server-start.sh config/zookeeper.properties

Start Kafka server

					bin/kafka-server-start.sh config/server.properties

Create the Kafka Topic

Now time to create your Kafka topic. To do this, we use the kafka-topics.sh command. But before you do, you need to do the following:

  • Choose a Topic Name: Select a unique and meaningful name for your Kafka topic. This name is used to identify the topic when producing and consuming messages.
  • Decide on Number of Partitions: Determine the number of partitions you want for your topic. Partitions allow for parallel message handling, improving scalability.
  • Set Replication Factor: Decide on the replication factor for your topic. The replication factor ensures fault tolerance by creating copies of each partition on different brokers.

Now, let’s Let’s create a topic named “new_topic” with 3 partitions and a replication factor of 2. Use the following code:

					bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 3 --topic new_topic

Verify Creation of the Kafka Topic

Confirm that your Kafka topic has been created successfully by running the following command:

					bin/kafka-topics.sh --list --zookeeper localhost:2181

This command displays information about the topic, including its name, partition count, replication factor, leader, and replicas.

Kafka Create Topic - Common Mistakes and Important Considerations

When using the kafka-topics.sh –create command to create Kafka topics, there are several common mistakes and important considerations to be aware of:

Replication Factor Limitation

You cannot specify a replication factor greater than the number of brokers you have in your Kafka cluster. The replication factor represents the number of copies of each partition, and having more replicas than available brokers is not possible.

Flexibility on the Number of Partitions

When it comes to specifying partitions, you have more flexibility. While there are no specific default values for partitions or replication factor, it’s a good practice to start with at least three partitions, especially in development environments.

Explicitly Specifying Partitions and Replication Factor

Unlike some other configurations in Kafka, partitions and replication factor must be explicitly specified when creating topics. There are no implicit defaults for these settings, so make sure to provide the required values in the command.

Follow the Topic-naming Conventions

When choosing a name for your Kafka topic, ensure that it contains only ASCII alphanumerics, hyphens (‘-‘), underscores (‘_’), and dots (‘.’), as per Kafka’s naming conventions.

Checking Documentation for Errors

If you encounter issues when running the command and see documentation displayed afterward, it’s a sign that your command contains errors. It’s essential to scroll up and carefully review the error message details to identify and rectify the problem.

Kafka Create Topic – How To Create Apache Kafka Topics Conclusion

In summary, Kafka topics are the core building blocks of Kafka-based applications. Properly configuring topics with an appropriate number of partitions and replication factor is crucial to ensure optimal performance and fault tolerance.

As you continue to explore Kafka, you discover its versatility in handling real-time data streams, enabling seamless communication between microservices, and facilitating various use cases, such as log aggregation, stream processing, and event-driven architectures.

Remember that whilst creating topics is a fundamental step, effectively designing topics and managing consumer groups are equally critical for building robust and scalable Kafka applications.

Avatar for Richard Kanyoro
Richard Kanyoro

The world’s biggest problems can be solved by progressively solving the little ones. I write to help people solve the “little” tech problems they face.

0 0 votes
Article Rating
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x