@addapptables/microservice
Version:
addapptables microservice
53 lines (45 loc) • 1.44 kB
text/typescript
import { Injectable, OnModuleDestroy } from '@nestjs/common';
import {
BROKER_CONTEXT,
BROKER_ACTION,
} from '../../config/constants.config';
import {
IBusAdapter,
IBrokerStart,
} from '../../interfaces';
import { Broker } from './broker';
import { BrokerProcess } from './broker-process';
import { ITransferData } from '../../interfaces/transfer-data';
import { TransferDataDto } from '../../interfaces/transfer-data-dto.interface';
import { CraftsLogger } from '../../logger';
()
export class BrokerService implements OnModuleDestroy {
private adapterInstance: IBusAdapter;
constructor(private readonly logger: CraftsLogger) {}
async onInit(adapterInstance: IBusAdapter) {
const config = {
context: BROKER_CONTEXT,
action: BROKER_ACTION,
data: null,
};
const options = { service: 'broker' };
adapterInstance.subscribe(this.subscribe, config, options);
this.adapterInstance = adapterInstance;
}
private subscribe = async (data: ITransferData<TransferDataDto>) => {
const brokers = Broker.getInstance();
const handle = brokers.get(data.cid);
brokers.delete(data.cid);
if (typeof handle !== 'function') {
return;
}
await handle(data);
};
start(): IBrokerStart {
const brokerProcess = new BrokerProcess(this.adapterInstance, this.logger);
return brokerProcess;
}
onModuleDestroy() {
this.adapterInstance.close();
}
}