Skip to content

Commit e085f28

Browse files
committed
✨ feat: rabbitmq 설정 시 오류 발생을 대비한 try/catch 구문 추가
1 parent a80ae4a commit e085f28

File tree

2 files changed

+116
-96
lines changed

2 files changed

+116
-96
lines changed

feed-crawler/src/common/rabbitmq.config.ts

Lines changed: 58 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -18,56 +18,66 @@ export class RabbitMQConfig {
1818
async setup() {
1919
const channel = await this.rabbitMQManager.getChannel();
2020

21-
//exchange 생성
22-
await channel.assertExchange(RMQ_EXCHANGES.EMAIL, RMQ_EXCHANGE_TYPE.DIRECT);
23-
await channel.assertExchange(
24-
RMQ_EXCHANGES.CRAWLING,
25-
RMQ_EXCHANGE_TYPE.TOPIC,
26-
);
27-
await channel.assertExchange(
28-
RMQ_EXCHANGES.DEAD_LETTER,
29-
RMQ_EXCHANGE_TYPE.TOPIC,
30-
);
21+
try {
22+
//exchange 생성
23+
await channel.assertExchange(
24+
RMQ_EXCHANGES.EMAIL,
25+
RMQ_EXCHANGE_TYPE.DIRECT,
26+
);
27+
await channel.assertExchange(
28+
RMQ_EXCHANGES.CRAWLING,
29+
RMQ_EXCHANGE_TYPE.TOPIC,
30+
);
31+
await channel.assertExchange(
32+
RMQ_EXCHANGES.DEAD_LETTER,
33+
RMQ_EXCHANGE_TYPE.TOPIC,
34+
);
3135

32-
// DLQ 생성
33-
await channel.assertQueue(RMQ_QUEUES.CRAWLING_FULL_DEAD_LETTER, {
34-
durable: true,
35-
});
36-
await channel.assertQueue(RMQ_QUEUES.EMAIL_DEAD_LETTER, { durable: true });
36+
// DLQ 생성
37+
await channel.assertQueue(RMQ_QUEUES.CRAWLING_FULL_DEAD_LETTER, {
38+
durable: true,
39+
});
40+
await channel.assertQueue(RMQ_QUEUES.EMAIL_DEAD_LETTER, {
41+
durable: true,
42+
});
3743

38-
//queue 생성
39-
await channel.assertQueue(RMQ_QUEUES.EMAIL_SEND, {
40-
durable: true,
41-
deadLetterExchange: RMQ_EXCHANGES.DEAD_LETTER,
42-
deadLetterRoutingKey: RMQ_ROUTING_KEYS.EMAIL_DEAD_LETTER,
43-
});
44-
await channel.assertQueue(RMQ_QUEUES.CRAWLING_FULL, {
45-
durable: true,
46-
deadLetterExchange: RMQ_EXCHANGES.DEAD_LETTER,
47-
deadLetterRoutingKey: RMQ_ROUTING_KEYS.CRAWLING_FULL_DEAD_LETTER,
48-
});
44+
//queue 생성
45+
await channel.assertQueue(RMQ_QUEUES.EMAIL_SEND, {
46+
durable: true,
47+
deadLetterExchange: RMQ_EXCHANGES.DEAD_LETTER,
48+
deadLetterRoutingKey: RMQ_ROUTING_KEYS.EMAIL_DEAD_LETTER,
49+
});
50+
await channel.assertQueue(RMQ_QUEUES.CRAWLING_FULL, {
51+
durable: true,
52+
deadLetterExchange: RMQ_EXCHANGES.DEAD_LETTER,
53+
deadLetterRoutingKey: RMQ_ROUTING_KEYS.CRAWLING_FULL_DEAD_LETTER,
54+
});
4955

50-
// DLQ 바인딩
51-
await channel.bindQueue(
52-
RMQ_QUEUES.EMAIL_DEAD_LETTER,
53-
RMQ_EXCHANGES.DEAD_LETTER,
54-
RMQ_ROUTING_KEYS.EMAIL_DEAD_LETTER,
55-
);
56-
await channel.bindQueue(
57-
RMQ_QUEUES.CRAWLING_FULL_DEAD_LETTER,
58-
RMQ_EXCHANGES.DEAD_LETTER,
59-
RMQ_ROUTING_KEYS.CRAWLING_FULL_DEAD_LETTER,
60-
);
61-
// queue 바인딩
62-
await channel.bindQueue(
63-
RMQ_QUEUES.EMAIL_SEND,
64-
RMQ_EXCHANGES.EMAIL,
65-
RMQ_ROUTING_KEYS.EMAIL_SEND,
66-
);
67-
await channel.bindQueue(
68-
RMQ_QUEUES.CRAWLING_FULL,
69-
RMQ_EXCHANGES.CRAWLING,
70-
RMQ_ROUTING_KEYS.CRAWLING_FULL,
71-
);
56+
// DLQ 바인딩
57+
await channel.bindQueue(
58+
RMQ_QUEUES.EMAIL_DEAD_LETTER,
59+
RMQ_EXCHANGES.DEAD_LETTER,
60+
RMQ_ROUTING_KEYS.EMAIL_DEAD_LETTER,
61+
);
62+
await channel.bindQueue(
63+
RMQ_QUEUES.CRAWLING_FULL_DEAD_LETTER,
64+
RMQ_EXCHANGES.DEAD_LETTER,
65+
RMQ_ROUTING_KEYS.CRAWLING_FULL_DEAD_LETTER,
66+
);
67+
68+
// queue 바인딩
69+
await channel.bindQueue(
70+
RMQ_QUEUES.EMAIL_SEND,
71+
RMQ_EXCHANGES.EMAIL,
72+
RMQ_ROUTING_KEYS.EMAIL_SEND,
73+
);
74+
await channel.bindQueue(
75+
RMQ_QUEUES.CRAWLING_FULL,
76+
RMQ_EXCHANGES.CRAWLING,
77+
RMQ_ROUTING_KEYS.CRAWLING_FULL,
78+
);
79+
} catch (error) {
80+
throw new Error(`RabbitMQ 설정 초기화 실패: ${error.message}`);
81+
}
7282
}
7383
}

server/src/common/rabbitmq/rabbitmq.config.ts

Lines changed: 58 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -18,56 +18,66 @@ export class RabbitMQConfig implements OnModuleInit {
1818
async setup() {
1919
const channel = await this.rabbitMQManager.getChannel();
2020

21-
//exchange 생성
22-
await channel.assertExchange(RMQ_EXCHANGES.EMAIL, RMQ_EXCHANGE_TYPE.DIRECT);
23-
await channel.assertExchange(
24-
RMQ_EXCHANGES.CRAWLING,
25-
RMQ_EXCHANGE_TYPE.TOPIC,
26-
);
27-
await channel.assertExchange(
28-
RMQ_EXCHANGES.DEAD_LETTER,
29-
RMQ_EXCHANGE_TYPE.TOPIC,
30-
);
21+
try {
22+
//exchange 생성
23+
await channel.assertExchange(
24+
RMQ_EXCHANGES.EMAIL,
25+
RMQ_EXCHANGE_TYPE.DIRECT,
26+
);
27+
await channel.assertExchange(
28+
RMQ_EXCHANGES.CRAWLING,
29+
RMQ_EXCHANGE_TYPE.TOPIC,
30+
);
31+
await channel.assertExchange(
32+
RMQ_EXCHANGES.DEAD_LETTER,
33+
RMQ_EXCHANGE_TYPE.TOPIC,
34+
);
3135

32-
// DLQ 생성
33-
await channel.assertQueue(RMQ_QUEUES.CRAWLING_FULL_DEAD_LETTER, {
34-
durable: true,
35-
});
36-
await channel.assertQueue(RMQ_QUEUES.EMAIL_DEAD_LETTER, { durable: true });
36+
// DLQ 생성
37+
await channel.assertQueue(RMQ_QUEUES.CRAWLING_FULL_DEAD_LETTER, {
38+
durable: true,
39+
});
40+
await channel.assertQueue(RMQ_QUEUES.EMAIL_DEAD_LETTER, {
41+
durable: true,
42+
});
3743

38-
//queue 생성
39-
await channel.assertQueue(RMQ_QUEUES.EMAIL_SEND, {
40-
durable: true,
41-
deadLetterExchange: RMQ_EXCHANGES.DEAD_LETTER, // DLX 설정
42-
deadLetterRoutingKey: RMQ_ROUTING_KEYS.EMAIL_DEAD_LETTER, //Routing Key 설정을 통해 DLQ 설정
43-
});
44-
await channel.assertQueue(RMQ_QUEUES.CRAWLING_FULL, {
45-
durable: true,
46-
deadLetterExchange: RMQ_EXCHANGES.DEAD_LETTER,
47-
deadLetterRoutingKey: RMQ_ROUTING_KEYS.CRAWLING_FULL_DEAD_LETTER,
48-
});
44+
//queue 생성
45+
await channel.assertQueue(RMQ_QUEUES.EMAIL_SEND, {
46+
durable: true,
47+
deadLetterExchange: RMQ_EXCHANGES.DEAD_LETTER,
48+
deadLetterRoutingKey: RMQ_ROUTING_KEYS.EMAIL_DEAD_LETTER,
49+
});
50+
await channel.assertQueue(RMQ_QUEUES.CRAWLING_FULL, {
51+
durable: true,
52+
deadLetterExchange: RMQ_EXCHANGES.DEAD_LETTER,
53+
deadLetterRoutingKey: RMQ_ROUTING_KEYS.CRAWLING_FULL_DEAD_LETTER,
54+
});
4955

50-
// DLQ 바인딩
51-
await channel.bindQueue(
52-
RMQ_QUEUES.EMAIL_DEAD_LETTER,
53-
RMQ_EXCHANGES.DEAD_LETTER,
54-
RMQ_ROUTING_KEYS.EMAIL_DEAD_LETTER,
55-
);
56-
await channel.bindQueue(
57-
RMQ_QUEUES.CRAWLING_FULL_DEAD_LETTER,
58-
RMQ_EXCHANGES.DEAD_LETTER,
59-
RMQ_ROUTING_KEYS.CRAWLING_FULL_DEAD_LETTER,
60-
);
61-
// queue 바인딩
62-
await channel.bindQueue(
63-
RMQ_QUEUES.EMAIL_SEND,
64-
RMQ_EXCHANGES.EMAIL,
65-
RMQ_ROUTING_KEYS.EMAIL_SEND,
66-
);
67-
await channel.bindQueue(
68-
RMQ_QUEUES.CRAWLING_FULL,
69-
RMQ_EXCHANGES.CRAWLING,
70-
RMQ_ROUTING_KEYS.CRAWLING_FULL,
71-
);
56+
// DLQ 바인딩
57+
await channel.bindQueue(
58+
RMQ_QUEUES.EMAIL_DEAD_LETTER,
59+
RMQ_EXCHANGES.DEAD_LETTER,
60+
RMQ_ROUTING_KEYS.EMAIL_DEAD_LETTER,
61+
);
62+
await channel.bindQueue(
63+
RMQ_QUEUES.CRAWLING_FULL_DEAD_LETTER,
64+
RMQ_EXCHANGES.DEAD_LETTER,
65+
RMQ_ROUTING_KEYS.CRAWLING_FULL_DEAD_LETTER,
66+
);
67+
68+
// queue 바인딩
69+
await channel.bindQueue(
70+
RMQ_QUEUES.EMAIL_SEND,
71+
RMQ_EXCHANGES.EMAIL,
72+
RMQ_ROUTING_KEYS.EMAIL_SEND,
73+
);
74+
await channel.bindQueue(
75+
RMQ_QUEUES.CRAWLING_FULL,
76+
RMQ_EXCHANGES.CRAWLING,
77+
RMQ_ROUTING_KEYS.CRAWLING_FULL,
78+
);
79+
} catch (error) {
80+
throw new Error(`RabbitMQ 설정 초기화 실패: ${error.message}`);
81+
}
7282
}
7383
}

0 commit comments

Comments
 (0)