Amazon MSK (Managed Streaming for Apache Kafka) is a fully managed service that makes it easy to build and run applications that use Apache Kafka to process streaming data.
Click to reveal answer
beginner
How does Amazon MSK simplify Kafka management?
Amazon MSK handles the setup, scaling, and maintenance of Kafka clusters, so you don't have to manage servers, patch software, or handle backups manually.
Click to reveal answer
intermediate
What are the main components of an Amazon MSK cluster?
An Amazon MSK cluster includes brokers (servers that store and serve Kafka data), ZooKeeper nodes (for managing cluster metadata), and storage volumes for data persistence.
Click to reveal answer
intermediate
How does Amazon MSK ensure data durability?
Amazon MSK stores data across multiple brokers and availability zones, replicating messages to prevent data loss even if some brokers fail.
Click to reveal answer
intermediate
What security features does Amazon MSK provide?
Amazon MSK supports encryption at rest and in transit, IAM-based access control, and integration with AWS PrivateLink for secure network access.
Click to reveal answer
What does Amazon MSK manage for you?
ACreating Kafka topics manually
BWriting Kafka producer code
CKafka cluster setup, scaling, and maintenance
DDeveloping Kafka consumer applications
✗ Incorrect
Amazon MSK manages the Kafka cluster infrastructure, including setup, scaling, and maintenance, so you can focus on your applications.
Which component in Amazon MSK manages cluster metadata?
AKafka brokers
BZooKeeper nodes
CAWS Lambda
DAmazon S3
✗ Incorrect
ZooKeeper nodes manage metadata and coordinate the Kafka cluster.
How does Amazon MSK ensure data is not lost if a broker fails?
ABy replicating data across multiple brokers and availability zones
BBy backing up data to Amazon S3 every second
CBy storing data only on a single broker
DBy using local disk caching
✗ Incorrect
Amazon MSK replicates data across brokers and availability zones to prevent data loss.
Which security feature is NOT provided by Amazon MSK?
AAutomatic code generation for Kafka clients
BIAM-based access control
CIntegration with AWS PrivateLink
DEncryption at rest
✗ Incorrect
Amazon MSK does not generate client code automatically; it focuses on cluster security and management.
What is the main benefit of using Amazon MSK?
AYou don't need to write any Kafka code
BIt only works with AWS Lambda functions
CIt replaces Kafka with a different streaming technology
DYou get a fully managed Kafka service that reduces operational overhead
✗ Incorrect
Amazon MSK provides a fully managed Kafka service, reducing the work needed to run Kafka clusters.
Explain what Amazon MSK is and how it helps developers.
Think about how it changes the way you handle Kafka infrastructure.
You got /3 concepts.
Describe the key security features of Amazon MSK.
Consider how data and access are protected.
You got /4 concepts.
Practice
(1/5)
1. What is the main benefit of using Amazon MSK for Kafka users?
easy
A. It manages Kafka servers for you, so you don't have to.
B. It replaces Kafka with a different messaging system.
C. It requires you to manually configure all Kafka brokers.
D. It only works with AWS Lambda functions.
Solution
Step 1: Understand Amazon MSK's purpose
Amazon MSK is a managed service that runs Kafka clusters for you.
Step 2: Compare options with MSK features
Only It manages Kafka servers for you, so you don't have to. correctly states that MSK manages Kafka servers, removing manual server management.
Final Answer:
It manages Kafka servers for you, so you don't have to. -> Option A
Quick Check:
Managed Kafka service = It manages servers [OK]
Hint: Remember MSK means managed Kafka servers [OK]
Common Mistakes:
Thinking MSK replaces Kafka
Assuming manual server setup is needed
Believing MSK only works with Lambda
2. Which of the following is the correct way to specify the bootstrap servers when connecting to an Amazon MSK cluster in Kafka client configuration?
easy
A. "localhost:9092"
B. "msk://cluster-endpoint"
C. "127.0.0.1:2181"
D. "b-1.mskcluster.abcd1234.kafka.us-east-1.amazonaws.com:9092,b-2.mskcluster.abcd1234.kafka.us-east-1.amazonaws.com:9092"
Solution
Step 1: Identify MSK cluster endpoints format
Amazon MSK provides bootstrap servers as DNS names with ports, like in "b-1.mskcluster.abcd1234.kafka.us-east-1.amazonaws.com:9092,b-2.mskcluster.abcd1234.kafka.us-east-1.amazonaws.com:9092".
Step 2: Eliminate incorrect formats
"localhost:9092" is localhost, not MSK. "127.0.0.1:2181" is Zookeeper port, not Kafka. "msk://cluster-endpoint" is not a valid Kafka bootstrap server format.
Final Answer:
"b-1.mskcluster.abcd1234.kafka.us-east-1.amazonaws.com:9092,b-2.mskcluster.abcd1234.kafka.us-east-1.amazonaws.com:9092" -> Option D
Quick Check:
MSK bootstrap servers = DNS names with ports [OK]
Hint: MSK bootstrap servers are DNS names with port 9092 [OK]
Common Mistakes:
Using localhost instead of MSK endpoints
Confusing Zookeeper port with Kafka port
Using invalid URI schemes like msk://
3. Given the following Kafka producer code snippet connecting to Amazon MSK, what will be the output if the message is sent successfully?
producer.send(new ProducerRecord<>("my-topic", "key1", "Hello MSK"));
System.out.println("Message sent successfully");
medium
A. Error: Connection refused
B. Message sent successfully
C. No output
D. Message failed to send
Solution
Step 1: Understand producer.send behavior
The send method is asynchronous but the print statement runs immediately after.
Step 2: Check output after send call
Since no error handling is shown and send is called, the print statement will output "Message sent successfully".
Final Answer:
Message sent successfully -> Option B
Quick Check:
Producer send + print = Message sent successfully [OK]
Hint: Print after send shows success unless exception thrown [OK]
Common Mistakes:
Assuming send blocks until confirmed
Expecting error without exception handling
Thinking no output means success
4. You have this Kafka consumer code connecting to Amazon MSK:
Properties props = new Properties();
props.put("bootstrap.servers", "b-1.mskcluster.kafka:9092");
props.put("group.id", "test-group");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
KafkaConsumer consumer = new KafkaConsumer<>(props);
consumer.subscribe(Collections.singletonList("my-topic"));
consumer.poll(Duration.ofMillis(100));
The consumer throws a runtime error about deserializer class not found. What is the likely cause?
medium
A. The topic name is invalid.
B. The bootstrap server address is wrong.
C. The deserializer class names are incorrect or misspelled.
D. The group.id property is missing.
Solution
Step 1: Analyze the error message
The error says deserializer class not found, so the problem is with deserializer class names.
Step 2: Check deserializer class names in code
They must be fully qualified and spelled exactly. Any typo causes class not found error.
Final Answer:
The deserializer class names are incorrect or misspelled. -> Option C
Quick Check:
Deserializer class error = wrong class name [OK]
Hint: Check spelling of deserializer class names first [OK]
Common Mistakes:
Ignoring class name typos
Assuming bootstrap server causes deserializer error
Missing group.id but error is about deserializer
5. You want to create a Kafka consumer in Java that connects to an Amazon MSK cluster and only processes messages with keys starting with "user-". Which approach correctly applies this filter after receiving messages?
hard
A. Use a Kafka Streams application with a filter on the key prefix.
B. Set the consumer property "key.filter.prefix" to "user-".
C. Subscribe only to topics named "user-*".
D. Configure the producer to send only keys starting with "user-".
Kafka consumers do not support filtering by key prefix via configuration properties.
Step 2: Identify correct filtering method
Kafka Streams allows processing and filtering messages by key prefix programmatically.
Step 3: Evaluate other options
There is no Kafka consumer property like "key.filter.prefix". Subscribing to topics named "user-*" filters by topic name, not message keys. Producer configuration controls what is sent, not what the consumer processes.
Final Answer:
Use a Kafka Streams application with a filter on the key prefix. -> Option A
Quick Check:
Filter keys after consuming = Kafka Streams filter [OK]
Hint: Filter keys in Kafka Streams, not consumer config [OK]
Common Mistakes:
Expecting consumer config to filter keys
Filtering by topic name instead of message key
Trying to filter on producer side only
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.