2.0.0 • Published 4 years ago

exchange-pubsub v2.0.0

Weekly downloads
16
License
ISC
Repository
github
Last release
4 years ago

Version Build Status

exchange-pubsub

A helper module to simplify @google-cloud/pubsub

Installation

npm i --save exchange-pubsub

Options

  • log = logger to use (defaults to console, set to false to disable)
  • defaultSubscribeOptions = (same as optional per-subscription options)
    • raw - provide full message to listener. Default = false (just the data)
    • autoAck - automatically acknowledge messages on return from listener. Default = true
    • subNameWithTopic - automatically add topic name to subscription name. Default = true
    • connectionInterval - automatically resubscribe every xx seconds of inactivity. 0 = off (default).
  • ignoreKeyFilename = don't set default pubSub keyFilename option
  • pubSub = see @google-cloud/pubsub
    • projectId will attempt to use process.env.GCLOUD_PROJECT if not set
    • keyFilename will set to 'lib/gcloud-auth.json' if not set and ignoreKeyFilename is not set
    • flowControl: maxMessages = 50 by default

Usage

const pubSub = require('exchange-pubsub');
// Optional:
pubSub.setOptions({
  log: console,
  defaultSubscribeOptions: {
    raw: false,
    autoAck: true,
  },
});

// simple usage:
pubSub.subscribe('myTopic', msgData => {
  // default is only the message.data property from pubsub
  console.log(msgData); // should be 'my message' in this example
  
  // optionally return false or a Promise
  // if return value resolves to false, message will be nack'd, else ack'd
  // (unless autoAck option is disabled)
});

pubSub.publish('myTopic', 'my message')
  .then(() => {/* do something */ })
  .catch(e => {/* error */ });

The default usage uses the topic as the subscription name which means it will be processed by a single subscriber (if multiple subscribers use the same name).

You can also specify the name manually, or have a random name generated:

// specify subscription name and options:
pubSub.subscribe('myTopic', 'subscription name', {autoAck: false, raw: true}, (msg => {
  console.log(msg.data);
  msg.ack();
}));

// random subscription name
pubSub.subscribe('myTopic', true, (msgData => {
  console.log(msgData);
  return Promise.reject();  // force a nack
}));

// CAUTION: careful with binding...
// DON'T DO: pubSub.subscribe('myTopic', true, myClass.function)
// Instead, use one of the following:
pubSub.subscribe('myTopic', 'subName', (msg) => myClass.function(msg));
pubSub.subscribe('myTopic', 'subName', myClass.function.bind(myClass));

Source: demo.js

2.0.0

4 years ago

1.5.2

4 years ago

1.5.1

4 years ago

1.5.0

5 years ago

1.4.2

5 years ago

1.4.1

5 years ago

1.4.0

5 years ago

1.3.0

6 years ago

1.2.11

6 years ago

1.2.10

6 years ago

1.2.9

6 years ago

1.2.8

6 years ago

1.2.7

6 years ago

1.2.6

6 years ago

1.2.5

6 years ago

1.2.4

6 years ago

1.2.3

7 years ago

1.2.2

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.0

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago