Practice
1. Which transport method in NestJS microservices is best suited for simple, direct communication between services on the same network without message brokering?
easy
Solution
Step 1: Understand transport types in NestJS
TCP transport is a simple protocol for direct communication between services on the same network without needing a message broker.Step 2: Compare with other transports
Redis, RabbitMQ, and Kafka are message brokers used for more complex messaging patterns and scalability.Final Answer:
TCP transport -> Option AQuick Check:
Direct network communication = TCP transport [OK]
Hint: Direct service communication without brokers uses TCP transport [OK]
Common Mistakes:
- Confusing Redis or RabbitMQ as direct transports
- Thinking Kafka is a simple direct transport
- Assuming TCP requires a message broker
2. Which of the following is the correct way to set up a RabbitMQ transport in a NestJS microservice?
easy
Solution
Step 1: Identify RabbitMQ transport setup
RabbitMQ transport in NestJS uses Transport.RMQ and requires options like urls (connection strings) and queue name.Step 2: Differentiate from other transports
TCP uses host and port, Redis uses channel and password, Kafka uses topic and brokers, so these are incorrect for RabbitMQ.Final Answer:
Transport.RMQ with options including urls and queue -> Option DQuick Check:
RabbitMQ setup = Transport.RMQ + urls + queue [OK]
Hint: RabbitMQ transport always uses Transport.RMQ with urls and queue [OK]
Common Mistakes:
- Using TCP options for RabbitMQ
- Confusing Redis channel with RabbitMQ queue
- Omitting urls in RabbitMQ config
3. Given the following NestJS microservice code snippet, what will be the output when a message is sent to the Redis transport?
const app = await NestFactory.createMicroservice(AppModule, {
transport: Transport.REDIS,
options: { url: 'redis://localhost:6379' }
});
app.listen(() => console.log('Microservice is listening'));medium
Solution
Step 1: Analyze the transport configuration
The code uses Transport.REDIS with a valid Redis URL, which is sufficient for Redis transport in NestJS.Step 2: Understand the listen callback
The listen method's callback logs 'Microservice is listening' when the microservice starts successfully.Final Answer:
Microservice is listening -> Option CQuick Check:
Valid Redis config logs listening message [OK]
Hint: Valid Redis transport logs 'Microservice is listening' on start [OK]
Common Mistakes:
- Expecting queue option for Redis transport
- Confusing Redis with RabbitMQ setup
- Assuming error without testing listen callback
4. Identify the error in this NestJS microservice transport configuration:
const app = await NestFactory.createMicroservice(AppModule, {
transport: Transport.RMQ,
options: {
urls: ['amqp://localhost:5672'],
queue: ''
}
});medium
Solution
Step 1: Check RMQ options correctness
RabbitMQ transport requires a non-empty queue name to route messages properly.Step 2: Validate other options
The urls option is correctly an array of connection strings; transport RMQ is correct; Redis password is irrelevant here.Final Answer:
The queue name is empty, which is invalid -> Option BQuick Check:
Empty queue name causes config error [OK]
Hint: RabbitMQ queue name must not be empty [OK]
Common Mistakes:
- Thinking urls must be a string
- Confusing transport type with Redis
- Ignoring empty queue name error
5. You need to design a NestJS microservice system that can handle high message throughput with guaranteed message delivery and supports multiple consumers. Which transport should you choose and why?
hard
Solution
Step 1: Identify requirements for high throughput and guaranteed delivery
Guaranteed delivery and multiple consumers require a message broker with queueing and acknowledgment features.Step 2: Evaluate transport options
TCP is simple but lacks message queueing; Redis supports pub/sub but has limited message durability; RabbitMQ supports queues, acknowledgments, and multiple consumers; in-memory is local only and not scalable.Final Answer:
RabbitMQ transport, because it supports message queues with acknowledgments and multiple consumers -> Option AQuick Check:
Guaranteed delivery + multiple consumers = RabbitMQ [OK]
Hint: Use RabbitMQ for guaranteed delivery and multiple consumers [OK]
Common Mistakes:
- Choosing TCP for guaranteed delivery
- Assuming Redis persistence equals RabbitMQ reliability
- Using in-memory transport for distributed systems
