UNPKG

roach-storm

Version:

Apache Kafka to Google Pub/Sub Gateway, API controlled

35 lines (34 loc) 1.25 kB
"use strict"; 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;