roach-storm
Version:
Apache Kafka to Google Pub/Sub Gateway, API controlled
35 lines (34 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const pubsub_1 = require("@google-cloud/pubsub");
class PubSubHandler {
constructor(config, roachStorm) {
this.client = new pubsub_1.PubSub(config.pubSubConfig);
this.roachStorm = roachStorm;
}
async publish(topic, message) {
const messageId = await this.client
.topic(topic)
.publish(Buffer.from(message));
this.roachStorm.metrics.inc(`pubsub_msg_out`, 1, { topic });
return messageId;
}
async subscribe(topicName, subscriptionName = "roach-storm-v1") {
const options = {
flowControl: {
maxBytes: 1024 * 8,
maxMessages: 1000,
},
};
const topic = this.client.topic(topicName);
const subscription = topic.subscription(subscriptionName, options);
const [newSubscription] = await subscription.get({
autoCreate: true,
});
// subscription is not deleted on close
// as keeping it open will store the messages (for a given retention)
// in case we have to restart or have downtimes
return newSubscription;
}
}
exports.default = PubSubHandler;