현재 회사 내부에서 운영중인 서비스 중에 순조롭게 잘 되고 있지만 내부적으로 특정 기능을 수행하면 서버 응답 속도가 매우 느려진다는 문제가 꾸준히 발생 되었다. 이 문제를 해결하기 위해 시간 투자를 많이 했기 때문에 다음에는 잊어버리지 않기 위해서 기록하기로 했다.
import { RabbitSubscribe } from '@golevelup/nestjs-rabbitmq';
import { Injectable } from '@nestjs/common';
@Injectable()
export class MessagingService {
@RabbitSubscribe({
exchange: 'exchange1',
routingKey: 'subscribe-route',
queue: 'subscribe-queue',
})
public async pubSubHandler(msg: {}) {
console.log(`Received message: ${JSON.stringify(msg)}`);
}
}
@Injectable()
export class InspectionsService {
constructor(
private readonly amqpConnection: AmqpConnection,
) {
if (process.env?.activeInspectionSubscribe === 'true') {
this.amqpConnection
.createSubscriber(
async (msg) => {
try {
await this.subInspectionsFileHandler(msg);
return new Nack();
} catch (e) {
this.logger.error(e.message);
return new Nack();
}
},
{
exchange: 'exchange1',
routingKey: 'subscribe-route',
queue: 'subscribe-queue',
},
)
.then(() => {
this.logger.log('Success Subscriber~');
});
}
}
module.exports = {
apps: [
{
name: 'TEST',
script: './dist/main.js',
instances: 12,
exec_mode: 'cluster',
merge_logs: true,
autorestart: true,
watch: false,
env_local: {
NODE_ENV: 'local',
activeInspectionSubscribe: false,
},
env_development: {
NODE_ENV: 'development',
activeInspectionSubscribe: false,
},
env_production: {
NODE_ENV: 'production',
activeInspectionSubscribe: false,
},
},
{
name: 'TEST',
script: './dist/main.js',
instances: 3,
exec_mode: 'cluster',
merge_logs: true,
autorestart: true,
watch: false,
env_local: {
NODE_ENV: 'local',
activeInspectionSubscribe: true,
},
env_development: {
NODE_ENV: 'development',
activeInspectionSubscribe: true,
},
env_production: {
NODE_ENV: 'production',
activeInspectionSubscribe: true,
},
},
],
};