/** * Disconnect from the server * * @memberof KafkaTransporter */ disconnect() { if (this.client) { this.client.close(() => { this.client = null; this.producer = null; if (this.consumer) { this.consumer.close(() => { this.consumer = null; }); } }); } }
createTopics(topics) { assert(Array.isArray(topics), '[egg-kafka] createTopics opction must be Array.'); this.client.createTopics(topics, error => { if (error) this.app.coreLogger.error(`[egg-kafka] createTopics have error ${error}`); }); }
client.loadMetadataForTopics([], (e, r) => { if (e) { console.log(e); // TODO: log! } else { if (r[1].metadata) { for (const topic in r[1].metadata) { _availableTopics[topic] = topic; } _TOPICSLIST.forEach((topic) => { if (!_availableTopics.hasOwnProperty(topic)) throw new Error(`${topic} is not available in consumer`); }); /* eslint-enable */ } } });
const initProducer = () => { return new Promise((resolve, reject) => { const Producer = kafka.Producer; const producerClient = new kafka.KafkaClient({kafkaHost: KAFKA_HOST}); const producer = new Producer(producerClient); producer.on('ready', () => { console.log('Producer ready. Refresh metadata'); producerClient.refreshMetadata([KAFKA_EVENT_TOPIC], (error) => { if (error) { console.error('Producer refresh metadata error:', error); reject(error); } resolve(producer); }); }); producer.on('error', (err) => { console.log('Producer error'); console.error(err); }); }) }
consumerClient.refreshMetadata([KAFKA_EVENT_TOPIC], (error, data) => { if (error) { console.error('Consumer refresh metadata error', error);
createTopics(topics) { assert(Array.isArray(topics), '[egg-kafka] createTopics opction must be Array.'); this.client.createTopics(topics, error => { if (error) this.app.coreLogger.error(`[egg-kafka] createTopics have error ${error}`); }); }