Build a Chat Room Application with Redpanda Cloud and Java

Create a basic chat room application with Redpanda Cloud and Kafka Java clients.

This example shows you how to:

  • Write a client application in Java to produce and consume chat room messages.

  • Build and run multiple clients to exchange chat messages streamed through Redpanda Cloud.

Demo of the application

What is a chat room application?

A chat room application is software that enables users to engage in real-time textual communication with one another. These applications typically allow multiple users to join a chat room, where they can send messages and interact with others in a group conversation.

Chat room applications often include features such as private messaging, user profiles, and notifications. Some popular chat room applications include Slack, Discord, and WhatsApp.

Why use Redpanda?

Redpanda offers several features that make it ideal for building a fast, scalable, and robust chat room application.

  • Scalability: Redpanda can scale horizontally and vertically to accommodate growing chat room usage over time.

  • Low-latency: Redpanda is designed for minimal latency to provide a smooth user experience and fast message delivery.

  • Fault tolerance: Redpanda is resilient to failures, thanks to its built-in replication and partitioning capabilities. This built-in resilience ensures that the chat room application continues to serve users even if individual brokers in the cluster experience downtime.

  • Durability: Redpanda persists messages on disk, maintaining chat history and allowing users to read previous conversations.


  • Complete the Redpanda Cloud Quickstart before continuing. This example expands on the quickstart.

  • Install the following:

    • Java 11 or 17 (OpenJDK is recommended)

    • Maven

    • Windows/Linux

    • macOS

    You can download OpenJDK from Adoptium, and can follow the installation instructions for Maven on the official Maven website.

    Mac users with Homebrew installed can run the following commands to install these dependencies:

    brew install openjdk@11 maven

    Make sure to follow any symlinking instructions in the Caveats output.

When the prerequisites are installed, the following commands should print the version of both Java and Maven:

java --version
mvn --version
Redpanda Cloud uses TLS certificates signed by Let’s Encrypt. Most programming languages will load their root certificate authority (CA), ISRG Root X1, by default so you shouldn’t need to provide a custom CA certificate.

Run the lab

Compile the client chat application, run it from multiple client terminals, and chat between the clients.

  1. Clone this repository:

    git clone
  2. Change into the example directory:

    cd clients/chat-room/cloud/java
  3. Open the Java files and replace the placeholders wrapped in angle brackets (<>) with the same values that you used in the Redpanda Cloud Quickstart.

  4. Install the dependencies by building the project:

    mvn package

    The output is verbose, but you should see a successful build message:

  5. Verify that the chat-room topic exists in your cluster by listing all topics:

    rpk topic list --tls-enabled


    chat-room  1           1
  6. If the topic doesn’t exist yet, use rpk to create a chat-room topic:

    rpk topic create chat-room --tls-enabled


    chat-room  OK
  7. From chat-room/cloud/java, compile the client application:

    mvn compile
  8. Open at least two terminals, and for each terminal:

    1. Run the client application:

      mvn exec:java -Dexec.mainClass="com.example.Main"
    2. When prompted with Enter user name:, enter a unique name for the chat room.

  9. Use the chat application: enter a message in a terminal, and verify that the message is received in the other terminals.

    For example:

    Enter user name:
    Connected, press Ctrl+C to exit
    Alice: Hi, I'm Alice
    Bob: Hi Alice, I'm Bob, nice to meet you

Files in the example

This example includes the following files:

  • src/main/java/com/example/ Checks whether the chat-room topic exists and creates it if not.

  • src/main/java/com/example/ A producer that sends strings entered by the user of the terminal to the chat-room topic. Messages are sent as JSON encoded strings.

  • src/main/java/com/example/ A consumer that reads all messages from the chat-room topic and prints them to the console. You can start as many consumer groups as you like, but each group reads a message only once, which is why the example is using a generated UUID for the group ID. This way, each time you run the application, you see all previous messages.

  • src/main/java/com/example/ The client application that creates the topic, producer, and consumer and implements the chat logic.

Next steps

This is a basic example of a chat room application. You can improve this application by implementing additional features and components, such as:

  • A user interface to make it more interactive and user-friendly.

  • A user registration and login system to authenticate users before they can access the chat room.

  • Rate limiting and other measures to prevent spamming and abuse in the chat room.

Suggested reading

For additional resources to help you build stream processing applications that can aggregate, join, and filter your data streams, see: