pubsub 6.1.2
Install from the command line:
Learn more about npm packages
$ npm install @algoan/pubsub@6.1.2
Install via package.json:
"@algoan/pubsub": "6.1.2"
About this version
This is a generic PubSub Factory exposing a listen and a emit method.
NOTE: Today, only Google Cloud PubSub has been added.
npm install --save @algoan/pubsub
To run tests or to try the PubSubFactory class, you need to have a google account and have installed gcloud sdk.
Then, to install the Google PubSub simulator, run:
gcloud components install pubsub-emulator
gcloud components install beta
gcloud components update
Start tests running:
npm test
It will launch a Google PubSub emulator thanks to the google-pubsub-emulator library.
To create a PubSub instance using Google Cloud:
import { EmittedMessage, GCPubSub, PubSubFactory, Transport } from '@algoan/pubsub'
const pubsub: GCPubSub = PubSubFactory.create({
transport: Transport.GOOGLE_PUBSUB,
options: {
projectId: 'test',
// And all other Google PubSub properties
}
});
const topicName: string = 'some_topic';
await pubsub.listen(topicName, {
autoAck: true,
onMessage: (data: EmittedMessage<{foo: string}>) => {
console.log(data.parsedData); // { foo: 'bar', time: {Date.now}, _eventName: 'some_topic' }
// do whatever you want. The message has already been acknowledged
},
onError: (error: Error) => {
// Handle error as you wish
}
});
await pubsub.emit(topicName, { foo: 'bar' });
Thank you for your future contribution 😁 Please follow these instructions before opening a pull request!
The only static method from the PubSubFactory
class. It initiates a new PubSub instance depending on the transport
. By default, it connects to Google Cloud PubSub.
-
transport
: PubSub technology to use. OnlyGOOGLE_PUBSUB
is available for now. -
options
: Options related to the transport.- If
transport === Transport.GOOGLE_PUBSUB
, then have a look at the Google Cloud PubSub config client. -
debug
: Display logs if it is set to true. It uses a pino logger and pino-pretty ifNODE_ENV
is not equal toproduction
. -
pinoOptions
: Ifdebug
is set to true, set the pino logger options. Default tolevel: debug
andprettyPrint: true
ifNODE_ENV
is not equal toproduction
. -
topicsPrefix
: Add a prefix to all created topics. Example:topicsPrefix: 'my-topic'
, all topics will begin withmy-topic+{your topic name}
. -
topicsSeparator
: Customize separator between topicsPrefix and topic name. Example:topicsSeparator: '-'
, all topics will be{topic prefix}-{your topic name} (default to '+')
. -
subscriptionsPrefix
: Add a prefix to all created subscriptions. Example:subscriptionsPrefix: 'my-sub'
, all subscriptions will begin withmy-sub%{your topic name}
. -
subscriptionsSeparator
: Customize separator between subscriptionsPrefix and topic name. Example:subscriptionsSeparator: '-'
, all subscriptions will be{subscription prefix}-{your topic name} (default to '%')
. -
namespace
: Add a namespace property to Message attributes when publishing on a topic. -
environment
: Add a environment property to Message attributes when publishing on a topic.
- If
Listen to a specific event.
NOTE: It only uses the Google Cloud subscription pull delivery for now.
-
event
: Name of the event. -
opts
: Options related to the Listener method-
onMessage
: Method called when receiving a message -
onError
: Method called when an error occurs -
options
: Option related to the chosen transport
-
If the chosen transport is Google Cloud PubSub, then options
would be:
-
autoAck
: Automatically ACK an event as soon as it is received (default totrue
) -
subscriptionOptions
: Options related to the created Subscription:-
name
: Custom name for the subscription. Default:event
(also equal to the topic name) -
get
: Options applied to thegetSubscription
method (have a look at Subscription options) -
sub
: Options applied to the subscription instance (see alsosetOptions
method) -
create
: Options applied to thecreateSubscription
method (have a look at Create Subscription options)
-
-
topicOptions
: Options applied to the created topic (have a look at Topic options) -
topicName
: Set the topic name. By default, it uses the default name with a prefix.
Emit a specific event with a payload. It added attributes in the message if you have added a namespace or an environment when setting the PubSubFactory
class. It also adds an _eventName
and a time
property in the emitted payload
.
-
event
: Name of the event to emit. -
payload
: Payload to send. It will be buffered by Google, and then parsed by the listen method. -
opts
: Options related to the Emit method-
metadata
: Custom metadata added to the message -
options
: Option related to the chosen transport
-
If the chosen transport is Google Cloud PubSub, then options
would be:
-
topicOptions
: Options applied to the created topic (have a look at Topic options) -
publishOptions
: Publish options set to the topic after its creation. Refer to Publish Options -
messageOptions
: Additional message options added to the message. Refer to Message Options