mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-07-19 09:53:36 -06:00
fix: create rabbitmq queues on set config
This commit is contained in:
parent
16a18c4f22
commit
9123d7014d
@ -41,3 +41,31 @@ export const initAMQP = () => {
|
|||||||
export const getAMQP = (): amqp.Channel | null => {
|
export const getAMQP = (): amqp.Channel | null => {
|
||||||
return amqpChannel;
|
return amqpChannel;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const initQueues = (instanceName: string, events: string[]) => {
|
||||||
|
const queues = events.map((event) => {
|
||||||
|
return `${event.replace(/_/g, '.').toLowerCase()}`;
|
||||||
|
});
|
||||||
|
|
||||||
|
queues.forEach((event) => {
|
||||||
|
const amqp = getAMQP();
|
||||||
|
const exchangeName = instanceName ?? 'evolution_exchange';
|
||||||
|
|
||||||
|
amqp.assertExchange(exchangeName, 'topic', {
|
||||||
|
durable: true,
|
||||||
|
autoDelete: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const queueName = `${instanceName}.${event}`;
|
||||||
|
|
||||||
|
amqp.assertQueue(queueName, {
|
||||||
|
durable: true,
|
||||||
|
autoDelete: false,
|
||||||
|
arguments: {
|
||||||
|
'x-queue-type': 'quorum',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
amqp.bindQueue(queueName, exchangeName, event);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
@ -5,6 +5,7 @@ import EventEmitter2 from 'eventemitter2';
|
|||||||
import { ConfigService, HttpServer } from '../../config/env.config';
|
import { ConfigService, HttpServer } from '../../config/env.config';
|
||||||
import { Logger } from '../../config/logger.config';
|
import { Logger } from '../../config/logger.config';
|
||||||
import { BadRequestException, InternalServerErrorException } from '../../exceptions';
|
import { BadRequestException, InternalServerErrorException } from '../../exceptions';
|
||||||
|
import { initQueues } from '../../libs/amqp.server';
|
||||||
import { RedisCache } from '../../libs/redis.client';
|
import { RedisCache } from '../../libs/redis.client';
|
||||||
import { InstanceDto } from '../dto/instance.dto';
|
import { InstanceDto } from '../dto/instance.dto';
|
||||||
import { RepositoryBroker } from '../repository/repository.manager';
|
import { RepositoryBroker } from '../repository/repository.manager';
|
||||||
@ -232,10 +233,12 @@ export class InstanceController {
|
|||||||
}
|
}
|
||||||
this.rabbitmqService.create(instance, {
|
this.rabbitmqService.create(instance, {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
events: rabbitmq_events,
|
events: newEvents,
|
||||||
});
|
});
|
||||||
|
|
||||||
rabbitmqEvents = (await this.rabbitmqService.find(instance)).events;
|
rabbitmqEvents = (await this.rabbitmqService.find(instance)).events;
|
||||||
|
|
||||||
|
initQueues(instance.instanceName, rabbitmqEvents);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.logger.log(error);
|
this.logger.log(error);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { Logger } from '../../config/logger.config';
|
import { Logger } from '../../config/logger.config';
|
||||||
|
import { initQueues } from '../../libs/amqp.server';
|
||||||
import { InstanceDto } from '../dto/instance.dto';
|
import { InstanceDto } from '../dto/instance.dto';
|
||||||
import { RabbitmqDto } from '../dto/rabbitmq.dto';
|
import { RabbitmqDto } from '../dto/rabbitmq.dto';
|
||||||
import { RabbitmqRaw } from '../models';
|
import { RabbitmqRaw } from '../models';
|
||||||
@ -13,6 +14,7 @@ export class RabbitmqService {
|
|||||||
this.logger.verbose('create rabbitmq: ' + instance.instanceName);
|
this.logger.verbose('create rabbitmq: ' + instance.instanceName);
|
||||||
this.waMonitor.waInstances[instance.instanceName].setRabbitmq(data);
|
this.waMonitor.waInstances[instance.instanceName].setRabbitmq(data);
|
||||||
|
|
||||||
|
initQueues(instance.instanceName, data.events);
|
||||||
return { rabbitmq: { ...instance, rabbitmq: data } };
|
return { rabbitmq: { ...instance, rabbitmq: data } };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user