Interactive queries in Kafka - Commands & Configuration
kafka-topics --create --topic pageviews --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1
--partitions - Number of partitions for parallelism--replication-factor - Number of copies for fault tolerancekafka-console-producer --topic pageviews --bootstrap-server localhost:9092--topic - Topic to send messages to--bootstrap-server - Kafka server addresscurl http://localhost:8080/state/pageviews/123
curl http://localhost:8080/state/pageviews/999
Interactive queries let you ask a live Kafka Streams app for its current data state directly, enabling real-time insights without extra storage.
Practice
What is the main purpose of interactive queries in Kafka Streams?
Solution
Step 1: Understand interactive queries concept
Interactive queries allow reading live state from Kafka Streams state stores.Step 2: Identify the main use case
The main use is to get real-time data from the app without extra databases.Final Answer:
To read live state data directly from the Kafka Streams application -> Option CQuick Check:
Interactive queries = read live state [OK]
- Confusing interactive queries with writing data
- Thinking it creates topics
- Assuming it monitors brokers
Which of the following is the correct way to get a state store named myStore of type ReadOnlyKeyValueStore in Kafka Streams?
Solution
Step 1: Recall Kafka Streams store retrieval syntax
The correct method is streams.store(storeName, storeType.class) in Java.Step 2: Match the correct syntax
store = streams.store("myStore", ReadOnlyKeyValueStore.class); uses streams.store with class type, which is correct method name and syntax.Final Answer:
store = streams.store("myStore", ReadOnlyKeyValueStore.class); -> Option AQuick Check:
Use streams.store with class type [OK]
- Using streams.getStore instead of streams.store
- Omitting .class for type
- Passing type without .class
Given the following code snippet in a Kafka Streams app, what will be the output if the key "user123" exists with value "active" in the state store?
var store = streams.store("userStatusStore", ReadOnlyKeyValueStore.class);
var status = store.get("user123");
System.out.println(status);Solution
Step 1: Understand store.get(key) behavior
The get method returns the value for the key if it exists, else null.Step 2: Check given key and value
Since "user123" exists with value "active", store.get("user123") returns "active".Final Answer:
"active" -> Option BQuick Check:
store.get(existingKey) = value [OK]
- Assuming null is returned even if key exists
- Expecting exceptions on missing keys
- Confusing syntax causing compile errors
Identify the error in this Kafka Streams interactive query code snippet:
var store = streams.store("ordersStore", ReadOnlyKeyValueStore.class);
var order = store.get(12345);
System.out.println(order);Solution
Step 1: Check method to get state store
The method streams.store is correct.Step 2: Validate key type and store type
Key type mismatch: passing integer 12345 instead of string key (common for ordersStore).Final Answer:
Passing integer key instead of string key -> Option AQuick Check:
Key type must match store definition [OK]
- Passing int literal without quotes for string keys
- Assuming key type must be string always
- Ignoring exception handling (not mandatory here)
You want to build a real-time dashboard that shows the current count of active users using Kafka Streams interactive queries. Which approach best fits this requirement?
Solution
Step 1: Identify real-time state storage method
Kafka Streams state stores hold live data accessible via interactive queries.Step 2: Choose best approach for live dashboard
Using ReadOnlyKeyValueStore allows querying current counts directly without extra DB.Final Answer:
Use a ReadOnlyKeyValueStore to store user statuses and query counts live -> Option DQuick Check:
Interactive queries + state store = real-time dashboard [OK]
- Relying on external DB instead of state store
- Polling Kafka consumer instead of querying store
- Using local variables which are not shared state
Ready to prove it?
Pass the test and this pattern moves unknown
