@cdp-forge/plugin-pipeline-sdk
Version:
SDK for pipeline plugins for CDP Forge platform
37 lines • 1.45 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const pulsar_client_1 = __importDefault(require("pulsar-client"));
class ConfigListener {
constructor(stage, config) {
this.consumer = null;
this.pulsar = new pulsar_client_1.default.Client({
serviceUrl: config.pulsar.proxy
});
this.config = config;
this.stage = stage;
}
async start() {
this.consumer = await this.pulsar.subscribe({
topic: this.config.pipelinemanager.config_topic,
subscription: this.config.plugin.name + `plugin-${this.config.pod.name}`,
subscriptionType: 'Exclusive',
listener: async (msg, msgConsumer) => {
console.log(msg.getData().toString());
const cfgMessage = JSON.parse(msg.getData().toString());
if (cfgMessage && cfgMessage.plugin === this.config.plugin.name) {
await this.stage.restart(cfgMessage.inputTopic, cfgMessage.outputTopic);
}
await msgConsumer.acknowledge(msg);
},
});
}
async stop() {
await this.consumer?.close();
await this.pulsar.close();
}
}
exports.default = ConfigListener;
//# sourceMappingURL=ConfigListener.js.map