Bird
Raised Fist0
Spring Bootframework~20 mins

RabbitMQ integration basics in Spring Boot - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
RabbitMQ Integration Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What happens when a Spring Boot RabbitMQ listener receives a message?
Consider a Spring Boot application with a RabbitMQ listener method annotated with @RabbitListener. What is the expected behavior when a message arrives in the queue?
Spring Boot
public class MessageListener {
    @RabbitListener(queues = "testQueue")
    public void receiveMessage(String message) {
        System.out.println("Received: " + message);
    }
}
AThe method is called automatically with the message content as the argument.
BThe method must be called manually after fetching the message from the queue.
CThe message is ignored unless the method returns a value.
DThe listener only logs the message but does not process it.
Attempts:
2 left
💡 Hint
Think about how Spring Boot handles methods annotated with @RabbitListener.
📝 Syntax
intermediate
2:00remaining
Which code snippet correctly declares a RabbitMQ queue bean in Spring Boot?
You want to declare a RabbitMQ queue named "myQueue" as a Spring bean. Which option is correct?
A
public Queue myQueue() {
    return new Queue("myQueue", false);
}
B
@Bean
public Queue myQueue() {
    return new Queue("myQueue");
}
C
@Bean
public Queue myQueue() {
    return new Queue();
}
D
@Bean
public Queue myQueue() {
    return new Queue("myQueue", true);
}
Attempts:
2 left
💡 Hint
Remember that @Bean annotation is needed and the constructor requires queue name and durability.
🔧 Debug
advanced
2:00remaining
Why does this Spring Boot RabbitMQ listener fail to receive messages?
Given the code below, why does the listener not receive any messages from the queue?
Spring Boot
public class Listener {
    @RabbitListener(queues = "orders")
    public void listen(String msg) {
        System.out.println("Order: " + msg);
    }
}

// Application properties:
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672

// No queue bean declared in configuration.
AThe listener method signature is incorrect; it must return a value.
BThe listener class must be annotated with @Component to be detected.
CThe RabbitMQ host and port are missing in application properties.
DThe queue 'orders' is not declared as a bean or created, so it does not exist in RabbitMQ.
Attempts:
2 left
💡 Hint
Check if the listener class is a Spring-managed bean.
❓ state_output
advanced
2:00remaining
What is the output when sending a message with RabbitTemplate?
Given the code below, what will be printed to the console?
Spring Boot
public class Sender {
    private final RabbitTemplate rabbitTemplate;

    public Sender(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    public void send() {
        rabbitTemplate.convertAndSend("myExchange", "myRoutingKey", "Hello World");
        System.out.println("Message sent");
    }
}

// Assume exchange and queue are properly configured and bound.
AMessage sent
BHello World
CError: exchange not found
DNo output
Attempts:
2 left
💡 Hint
Focus on what the code explicitly prints.
🧠 Conceptual
expert
2:00remaining
Which statement best describes the role of RabbitMQ exchanges in Spring Boot integration?
In Spring Boot RabbitMQ integration, what is the primary role of an exchange?
AAn exchange stores messages until consumers retrieve them.
BAn exchange is a client that sends messages to RabbitMQ.
CAn exchange routes messages to queues based on routing keys and binding rules.
DAn exchange encrypts messages before sending them to queues.
Attempts:
2 left
💡 Hint
Think about how messages find their way to queues.

Practice

(1/5)
1. What is the primary role of @RabbitListener annotation in Spring Boot RabbitMQ integration?
easy
A. To configure RabbitMQ connection settings
B. To mark a method that listens for messages from a RabbitMQ queue
C. To send messages to a RabbitMQ queue
D. To declare a RabbitMQ queue

Solution

  1. Step 1: Understand the purpose of @RabbitListener

    @RabbitListener is used to mark methods that should receive messages asynchronously from a RabbitMQ queue.
  2. Step 2: Differentiate from other RabbitMQ tasks

    Sending messages is done by RabbitTemplate, and queue declaration is done by configuration or annotations like @Queue. Connection settings are configured separately.
  3. Final Answer:

    To mark a method that listens for messages from a RabbitMQ queue -> Option B
  4. Quick Check:

    @RabbitListener = listens to messages [OK]
Hint: Listener annotation marks methods to receive messages [OK]
Common Mistakes:
  • Confusing @RabbitListener with sending messages
  • Thinking it configures connection settings
  • Assuming it declares queues
2. Which of the following is the correct way to send a message to a RabbitMQ queue named myQueue using RabbitTemplate in Spring Boot?
easy
A. rabbitTemplate.convertAndSend("myQueue", "Hello World")
B. rabbitTemplate.send("myQueue", "Hello World")
C. rabbitTemplate.receive("myQueue", "Hello World")
D. rabbitTemplate.listen("myQueue", "Hello World")

Solution

  1. Step 1: Identify the correct RabbitTemplate method for sending messages

    RabbitTemplate uses convertAndSend to send messages converting objects to message format.
  2. Step 2: Check other options for correctness

    send requires a Message object, not a String directly. receive and listen are not used for sending messages.
  3. Final Answer:

    rabbitTemplate.convertAndSend("myQueue", "Hello World") -> Option A
  4. Quick Check:

    Send message = convertAndSend [OK]
Hint: Use convertAndSend to send messages with RabbitTemplate [OK]
Common Mistakes:
  • Using send() with a plain string instead of a Message object
  • Confusing receive() with sending
  • Trying to use listen() method which doesn't exist
3. Given the following Spring Boot RabbitMQ listener method, what will be printed when a message "Test Message" arrives in the queue?
@RabbitListener(queues = "testQueue")
public void receiveMessage(String message) {
    System.out.println("Received: " + message);
}
medium
A. No output, method is not called
B. Test Message
C. Received message
D. Received: Test Message

Solution

  1. Step 1: Understand the listener method behavior

    The method receives the message string and prints it prefixed with "Received: ".
  2. Step 2: Substitute the message content

    When "Test Message" arrives, the output will be "Received: Test Message".
  3. Final Answer:

    Received: Test Message -> Option D
  4. Quick Check:

    Prints "Received: " + message [OK]
Hint: Listener prints message with prefix 'Received:' [OK]
Common Mistakes:
  • Assuming only message content is printed
  • Thinking method won't be called automatically
  • Ignoring the print statement prefix
4. Identify the error in the following Spring Boot RabbitMQ listener code snippet:
@RabbitListener(queues = "myQueue")
public void listen() {
    System.out.println("Message received");
}
medium
A. Method must have a parameter to receive the message
B. @RabbitListener annotation is missing queue name
C. Method should return a value
D. System.out.println is not allowed in listener methods

Solution

  1. Step 1: Check method signature for message reception

    Listener methods must have a parameter to receive the message payload, usually a String or object.
  2. Step 2: Verify other options

    The queue name is present, returning a value is not required, and printing is allowed for debugging.
  3. Final Answer:

    Method must have a parameter to receive the message -> Option A
  4. Quick Check:

    Listener needs parameter for message [OK]
Hint: Listener methods need a parameter to get messages [OK]
Common Mistakes:
  • Omitting the message parameter
  • Thinking return value is mandatory
  • Assuming printing is disallowed
5. You want to send a Java object User to a RabbitMQ queue and receive it back as the same object type using Spring Boot. Which combination of steps is correct to achieve this?
hard
A. Use RabbitTemplate.convertAndSend() to send, and @RabbitListener with String parameter to receive
B. Use RabbitTemplate.send() with a String message, and @RabbitListener with String parameter
C. Use RabbitTemplate.convertAndSend() to send, and @RabbitListener with a User parameter to receive
D. Use RabbitTemplate.send() with a User object, and @RabbitListener with Object parameter

Solution

  1. Step 1: Sending Java objects with RabbitTemplate

    RabbitTemplate.convertAndSend() converts Java objects to messages automatically, suitable for sending User objects.
  2. Step 2: Receiving and converting messages back to objects

    @RabbitListener methods can declare a parameter of type User to receive and convert the message back to the User object.
  3. Final Answer:

    Use RabbitTemplate.convertAndSend() to send, and @RabbitListener with a User parameter to receive -> Option C
  4. Quick Check:

    convertAndSend + typed @RabbitListener = object transfer [OK]
Hint: Use convertAndSend and typed listener parameter for objects [OK]
Common Mistakes:
  • Using send() with plain strings for objects
  • Receiving as String when sending objects
  • Not matching parameter type in listener
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard