advanced
NestJS microservices module
Используйте NestJS transports, message patterns, serialization, timeouts, retries, idempotency и boundaries between HTTP and messaging.
NestJS microservices используют transport layers (TCP, Redis, NATS, Kafka, gRPC, MQTT) вместе с HTTP или вместо него. `@MessagePattern` и `@EventPattern` связывают handlers с формой messages.
@Controller()
export class OrdersMsController {
@MessagePattern({ cmd: 'get_order' })
getOrder(@Payload() data: { id: string }) {
return this.orders.findOne(data.id);
}
@EventPattern('order_created')
onOrderCreated(@Payload() event: OrderCreatedEvent) {
return this.notifications.send(event);
}
}
Hybrid apps соединяют HTTP и microservice transports в одном процессе. Serialization, timeouts, retries и dead-letter — зависят от transport. Idempotency важна при at-least-once delivery.
На интервью: когда разделять HTTP и messaging, request-response vs fire-and-forget events, health checks по transports.
Типовые ошибки: handlers как HTTP без timeout/retry, shared mutable state между transports, нет correlation IDs между services.
Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.
Чеклист:
- Transport по требованиям delivery и ops.
- Явные message contracts и versioning.
- Timeouts, retries, idempotency.
- Domain logic transport-agnostic в services.