File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -41,3 +41,31 @@ export const initAMQP = () => {
4141export const getAMQP = ( ) : amqp . Channel | null => {
4242 return amqpChannel ;
4343} ;
44+
45+ export const initQueues = ( instanceName : string , events : string [ ] ) => {
46+ const queues = events . map ( ( event ) => {
47+ return `${ event . replace ( / _ / g, '.' ) . toLowerCase ( ) } ` ;
48+ } ) ;
49+
50+ queues . forEach ( ( event ) => {
51+ const amqp = getAMQP ( ) ;
52+ const exchangeName = instanceName ?? 'evolution_exchange' ;
53+
54+ amqp . assertExchange ( exchangeName , 'topic' , {
55+ durable : true ,
56+ autoDelete : false ,
57+ } ) ;
58+
59+ const queueName = `${ instanceName } .${ event } ` ;
60+
61+ amqp . assertQueue ( queueName , {
62+ durable : true ,
63+ autoDelete : false ,
64+ arguments : {
65+ 'x-queue-type' : 'quorum' ,
66+ } ,
67+ } ) ;
68+
69+ amqp . bindQueue ( queueName , exchangeName , event ) ;
70+ } ) ;
71+ } ;
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import EventEmitter2 from 'eventemitter2';
55import { ConfigService , HttpServer } from '../../config/env.config' ;
66import { Logger } from '../../config/logger.config' ;
77import { BadRequestException , InternalServerErrorException } from '../../exceptions' ;
8+ import { initQueues } from '../../libs/amqp.server' ;
89import { RedisCache } from '../../libs/redis.client' ;
910import { InstanceDto } from '../dto/instance.dto' ;
1011import { RepositoryBroker } from '../repository/repository.manager' ;
@@ -232,10 +233,12 @@ export class InstanceController {
232233 }
233234 this . rabbitmqService . create ( instance , {
234235 enabled : true ,
235- events : rabbitmq_events ,
236+ events : newEvents ,
236237 } ) ;
237238
238239 rabbitmqEvents = ( await this . rabbitmqService . find ( instance ) ) . events ;
240+
241+ initQueues ( instance . instanceName , rabbitmqEvents ) ;
239242 } catch ( error ) {
240243 this . logger . log ( error ) ;
241244 }
Original file line number Diff line number Diff line change 11import { Logger } from '../../config/logger.config' ;
2+ import { initQueues } from '../../libs/amqp.server' ;
23import { InstanceDto } from '../dto/instance.dto' ;
34import { RabbitmqDto } from '../dto/rabbitmq.dto' ;
45import { RabbitmqRaw } from '../models' ;
@@ -13,6 +14,7 @@ export class RabbitmqService {
1314 this . logger . verbose ( 'create rabbitmq: ' + instance . instanceName ) ;
1415 this . waMonitor . waInstances [ instance . instanceName ] . setRabbitmq ( data ) ;
1516
17+ initQueues ( instance . instanceName , data . events ) ;
1618 return { rabbitmq : { ...instance , rabbitmq : data } } ;
1719 }
1820
You can’t perform that action at this time.
0 commit comments