Self-Learning Kafka Streams with Scala – #1

A few days ago, I came across a situation where I wanted to do a stateful operation on the streaming data. So, I started finding possible solutions for it. I came across many solutions which were using different technologies like Spark Structured Streaming, Apache Flink, Kafka Streams, etc.

All the solutions solved my problem, but I selected Kafka Streams because it met most of my requirements. After that, I started reading its documentation and trying to run its examples. But, as soon as I started learning it, I hit a major roadblock, that was, “Kafka Streams does not provide a Scala API!“. I was shocked to know that.

The reason I was expecting Kafka Streams to have a Scala API was that I am using Scala to build my application and if Kafka Streams provided an API for it then it would have been easy for me to include it in my application. But that didn’t turn out to be the case. Over the top when I searched for its Scala examples, I was able to find only a handful of them.

So, I decided to learn it on my own and my first step was to build a “Hello World!” program using Kafka Streams and Scala, like this:

Before running this example, we need to start Kafka server. To do that you can read their quick start guide. After that, send some messages to Kafka topic – “SourceTopic” and start a Kafka Consumer for Kafka topic – “SinkTopic“.

$ bin/ --broker-list localhost:9092 --topic SourceTopic
hello world!

Now, run the example and you will see that Kafka consumer topic – “SinkTopic” will receive the message.

$ bin/ --bootstrap-server localhost:9092 --topic SinkTopic
hello world!

This means that now we are able to send messages from one Kafka topic to another via Kafka Streams.

So, this was my first step to learn Kafka Streams with Scala. I know that it is not much, but I still need to explore more in Kafka Streams like transformations, joins, aggregations, etc., about which I will be writing in my future posts. So, stay tuned 🙂

The complete code can be downloaded from Github.

Please feel free to suggest or comment!


This entry was posted in Apache Kafka, Scala, Streaming and tagged . Bookmark the permalink.

2 Responses to Self-Learning Kafka Streams with Scala – #1

  1. Harsha says:

    Hello himanshu
    Can you just help me how to mock database connection using Mockito by using scala language in spark application?
    Thanks in advance!!!!!!

  2. Pingback: Self-Learning Kafka Streams with Scala – #2 | Knoldus

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s