gcloud-pubsub-kafka-connect
Version:
kafka connect connector for Google Cloud's Pubsub
83 lines (65 loc) • 2.19 kB
JavaScript
const program = require("commander");
const path = require("path");
const { runSourceConnector } = require("./../index.js");
const pjson = require("./../package.json");
const loadConfig = require("./../config/loadConfig.js");
program
.version(pjson.version)
.option("-c, --config [string]", "Path to Config (alternatively)")
.option("-k, --kafka [string]", "Zookeeper Connection String")
.option("-n, --client_name [string]", "Kafka Client Name")
.option("-t, --topic [string]", "Kafka Topic to Produce to")
.option("-a, --partitions [integer]", "Amount of Kafka Topic Partitions")
.option("-p, --project_id [string]", "GCloud project id")
.option("-s, --subscription [string]", "PubSub subscription id")
.option("-u, --pubsub_topic [string]", "PubSub topic")
.option("-i, --id_column [string]", "Id column for insert ids and message keys")
.option("-v, --interval [integer]", "Table poll interval (ms)")
.option("-o, --max_pollcount [integer]", "Max row count per poll action")
.parse(process.argv);
const config = loadConfig(program.config);
if (program.kafka) {
config.kafka.zkConStr = program.kafka;
}
if (program.client_name) {
config.kafka.clientName = program.client_name;
}
if (program.topic) {
config.topic = program.topic;
}
if (program.partitions) {
config.partitions = program.partitions;
}
if (program.project_id) {
config.connector.project_id = program.project_id;
}
if (program.dataset) {
config.connector.dataset = program.dataset;
}
if (program.table) {
config.connector.table = program.table;
}
if (program.id_column) {
config.connector.id_column = program.id_column;
}
if (program.interval) {
config.pollInterval = program.interval;
}
if (program.max_pollcount) {
config.connector.maxPollCount = program.max_pollcount;
}
runSourceConnector(config, [], console.log.bind(console)).then(sink => {
const exit = (isExit = false) => {
sink.stop();
if (!isExit) {
process.exit();
}
};
process.on("SIGINT", () => {
exit(false);
});
process.on("exit", () => {
exit(true);
});
});