이번 포스트에서는 Nest.js 프레임워크에서 타입스크립트를 사용하여 메시지 큐를 처리하는 방법에 대해 알아보겠습니다. 메시지 큐는 시스템 간의 통신 및 비동기 작업 처리에 유용하며, Nest.js와 타입스크립트를 함께 활용하면 간편하게 메시지 큐를 다룰 수 있습니다.
1. Nest.js 프로젝트 설정
우선, Nest.js 프로젝트를 생성하고 필요한 의존성 패키지를 설치합니다.
npm install @nestjs/microservices amqplib
@nestjs/microservices
패키지는 Nest.js에서 마이크로서비스를 구축할 수 있도록 도와주고, amqplib
는 RabbitMQ와 통신하기 위한 패키지입니다.
2. RabbitMQ 연결 설정
다음으로, RabbitMQ와의 연결을 설정합니다. MicroserviceOptions
객체를 사용하여 RabbitMQ 호스트 및 포트를 지정하고, Nest.js 애플리케이션과 연결합니다.
import { NestFactory } from '@nestjs/core';
import { RabbitMQOptions, Transport } from '@nestjs/microservices';
async function bootstrap() {
const app = await NestFactory.createMicroservice<RabbitMQOptions>(
AppModule,
{
transport: Transport.RMQ,
options: {
urls: ['amqp://localhost:5672'],
queue: 'message_queue',
queueOptions: {
durable: false,
},
},
},
);
app.listen(() => console.log('Microservice is listening'));
}
bootstrap();
위 코드에서 urls
는 RabbitMQ 서버의 주소로 설정하고, queue
는 메시지 큐의 이름을 지정합니다.
3. 메시지 송수신 구현
이제 메시지를 송수신하는 기능을 구현해보겠습니다.
import { Controller } from '@nestjs/common';
import { MessagePattern } from '@nestjs/microservices';
@Controller()
export class MessageController {
@MessagePattern('message_queue')
handleMessage(data: Record<string, unknown>) {
console.log('Received message:', data);
// 메시지 처리 로직 구현
}
}
위 코드에서 @MessagePattern('message_queue')
는 지정된 메시지 큐에서 메시지를 수신하는 핸들러를 정의합니다. 해당 핸들러 내부에서는 받은 메시지를 처리하는 로직을 추가할 수 있습니다.
결론
Nest.js와 타입스크립트를 사용하여 RabbitMQ와 통신하는 방법에 대해 간단히 알아보았습니다. 이를 활용하여 메시지 큐를 효과적으로 다루고 비동기 작업을 처리할 수 있습니다.
위 내용은 Nest.js 공식 문서 및 RabbitMQ 관련 자료를 참고하여 작성되었습니다.
더 자세한 내용은 Nest.js 공식 문서를 참고하시기 바랍니다.