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.