|
1 | 1 | import amqplib, { ConsumeMessage } from 'amqplib';
|
2 | 2 | import { ConnectionSettings } from './ConnectionSettings';
|
3 |
| -import { RabbitMQConsumer } from './RabbitMQConsumer'; |
4 | 3 | import { RabbitMQExchangeNameFormatter } from './RabbitMQExchangeNameFormatter';
|
| 4 | + |
5 | 5 | export class RabbitMqConnection {
|
6 | 6 | private connectionSettings: ConnectionSettings;
|
7 | 7 | private channel?: amqplib.ConfirmChannel;
|
@@ -66,17 +66,6 @@ export class RabbitMqConnection {
|
66 | 66 | return args;
|
67 | 67 | }
|
68 | 68 |
|
69 |
| - async consume(exchange: string, queue: string, consumer: RabbitMQConsumer) { |
70 |
| - await this.channel!.consume(queue, (message: ConsumeMessage | null) => { |
71 |
| - if (message) { |
72 |
| - const ack = this.getAck(message); |
73 |
| - const retry = this.getRetry(message, queue, exchange); |
74 |
| - const deadLetter = this.getDeadLetter(message, queue, exchange); |
75 |
| - consumer.onMessage({ message, ack, retry, deadLetter }); |
76 |
| - } |
77 |
| - }); |
78 |
| - } |
79 |
| - |
80 | 69 | async deleteQueue(queue: string) {
|
81 | 70 | return await this.channel!.deleteQueue(queue);
|
82 | 71 | }
|
@@ -129,28 +118,31 @@ export class RabbitMqConnection {
|
129 | 118 | return await this.connection?.close();
|
130 | 119 | }
|
131 | 120 |
|
132 |
| - getAck(message: ConsumeMessage) { |
133 |
| - return () => { |
134 |
| - this.channel!.ack(message); |
135 |
| - }; |
| 121 | + async consume(queue: string, onMessage: (message: ConsumeMessage) => {}) { |
| 122 | + await this.channel!.consume(queue, (message: ConsumeMessage | null) => { |
| 123 | + if (!message) { |
| 124 | + return; |
| 125 | + } |
| 126 | + onMessage(message); |
| 127 | + }); |
136 | 128 | }
|
137 | 129 |
|
138 |
| - getRetry(message: ConsumeMessage, queue: string, exchange: string) { |
139 |
| - return async () => { |
140 |
| - const retryExchange = RabbitMQExchangeNameFormatter.retry(exchange); |
141 |
| - const options = this.getMessageOptions(message); |
| 130 | + ack(message: ConsumeMessage) { |
| 131 | + this.channel!.ack(message); |
| 132 | + } |
142 | 133 |
|
143 |
| - return await this.publish({ exchange: retryExchange, routingKey: queue, content: message.content, options }); |
144 |
| - }; |
| 134 | + async retry(message: ConsumeMessage, queue: string, exchange: string) { |
| 135 | + const retryExchange = RabbitMQExchangeNameFormatter.retry(exchange); |
| 136 | + const options = this.getMessageOptions(message); |
| 137 | + |
| 138 | + return await this.publish({ exchange: retryExchange, routingKey: queue, content: message.content, options }); |
145 | 139 | }
|
146 | 140 |
|
147 |
| - getDeadLetter(message: ConsumeMessage, queue: string, exchange: string) { |
148 |
| - return async () => { |
149 |
| - const deadLetterExchange = RabbitMQExchangeNameFormatter.deadLetter(exchange); |
150 |
| - const options = this.getMessageOptions(message); |
| 141 | + async deadLetter(message: ConsumeMessage, queue: string, exchange: string) { |
| 142 | + const deadLetterExchange = RabbitMQExchangeNameFormatter.deadLetter(exchange); |
| 143 | + const options = this.getMessageOptions(message); |
151 | 144 |
|
152 |
| - return await this.publish({ exchange: deadLetterExchange, routingKey: queue, content: message.content, options }); |
153 |
| - }; |
| 145 | + return await this.publish({ exchange: deadLetterExchange, routingKey: queue, content: message.content, options }); |
154 | 146 | }
|
155 | 147 |
|
156 | 148 | private getMessageOptions(message: ConsumeMessage) {
|
|
0 commit comments