js-executor - improved lifecycle events and added kill for crash event

This commit is contained in:
Sergey Matvienko 2022-10-27 15:22:45 +03:00
parent 6c9ad0399d
commit 5776f5b39b
2 changed files with 17 additions and 9 deletions

View File

@ -30,6 +30,8 @@ import {
TopicMessages
} from 'kafkajs';
import process, { kill, exit } from 'process';
export class KafkaTemplate implements IQueue {
private logger = _logger(`kafkaTemplate`);
@ -122,6 +124,7 @@ export class KafkaTemplate implements IQueue {
this.logger.error(`Got consumer CRASH event, should restart: ${e.payload.restart}`);
if (!e.payload.restart) {
this.logger.error('Going to exit due to not retryable error!');
kill(process.pid, 'SIGTERM'); //sending signal to myself process to trigger the handler
await this.destroy();
}
});
@ -253,6 +256,7 @@ export class KafkaTemplate implements IQueue {
}
}
this.logger.info('Kafka resources stopped.');
exit(0); //same as in version before
}
private async disconnectProducer(): Promise<void> {

View File

@ -81,6 +81,7 @@ process.on('exit', (code: number) => {
async function exit(status: number) {
logger.info('Exiting with status: %d ...', status);
try {
if (httpServer) {
const _httpServer = httpServer;
httpServer = null;
@ -91,5 +92,8 @@ async function exit(status: number) {
queues = null;
await _queues.destroy();
}
} catch (e) {
logger.error('Error on exit');
}
process.exit(status);
}