Skip to content

Instantly share code, notes, and snippets.

@stephenplusplus
Last active August 29, 2015 14:23
Show Gist options
  • Select an option

  • Save stephenplusplus/04594f5026dec99bf896 to your computer and use it in GitHub Desktop.

Select an option

Save stephenplusplus/04594f5026dec99bf896 to your computer and use it in GitHub Desktop.
gcloud subscription
'use strict';
var topicName = 'book-process-queue';
var subscriptionName = 'shared-worker-subscription';
var creatingSubscription = false;
var subscription;
var onMessageHandlers = [];
module.exports = function() {
var pubsub = gcloud.pubsub(config.gcloud);
var topic = pubsub.topic(topicName);
function subscribe(onMessageHandler) {
onMessageHandlers.push(onMessageHandler);
if (!subscription) {
createSubscription();
}
}
function createSubscription() {
if (creatingSubscription) {
return;
}
creatingSubscription = true;
topic.subscribe(subscriptionName, { autoAck: true }, onSubscriptionCreated);
}
function onSubscriptionCreated(err, subscriptionInstance) {
creatingSubscription = false;
if (err && err.code === 404) {
pubsub.createTopic(topicName, createSubscription);
return;
}
subscription = subscriptionInstance;
subscription.on('message', onMessageReceived);
logging.info('Listening to ' + topicName + ' with subscription ' + subscriptionName);
}
function onMessageReceived(message) {
onMessageHandlers.forEach(function(onMessageHandler) {
onMessageHandler(message.data);
});
}
return {
subscribe: subscribe
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment