Exciting news!Announcing our $4.6M Series Seed. Learn more
Socket
LoveBlogFAQ
Install
Log in

@erento/nestjs-module-google-pubsub

Package Overview
Dependencies
3
Maintainers
6
Versions
9
Issues
File Explorer

Advanced tools

@erento/nestjs-module-google-pubsub

NestJS module to work with Google Pub/Sub messages.

    3.0.0latest

Version published
Maintainers
6
Yearly downloads
5,657
increased by89.9%

Weekly downloads

Changelog

Source

Removed lang pipe -> please use locale pipe instead.

Upgraded dependencies

Readme

Source

NestJS Google Pub/Sub module

Easy way to publish messages to Google Pub/Sub. Supports encrypting the message.

How to use it

  1. Import

    Import this module in the module you want to use it: typescript imports: [ PubSubModule.forRoot( {keyFilename: PUBSUB_CONFIG}, X_PUBSUB_KEY, X_PUBSUB_ENCRYPTION_KEY, SERVICE_IDENTIFIER ) ]

    • PUBSUB_CONFIG is the path to the file with the service account, e.g.: ./config/pubsub.config.json
    • X_PUBSUB_KEY is a secret signature key to encrypt the message. This is necessary for write, but can be used in read operation to verify a signature.
    • X_PUBSUB_ENCRYPTION_KEY is a secret encryption key. This is necessary for write and read.
    • SERVICE_IDENTIFIER is a string represantation of a sender, e.g. "price-service", "user-service", etc.
  2. Usage

    • Publish a messages:

      await this.pubSubService.publishMessage<MyMessage>( 'projects/project-name/topics/topic-name', { // this can be any object, in this case: MyMessage text: `some message`, }, { myAttribute: 'any other attribute you need to pass', }, );
    • Read a messages:

      private async onSubscriptionMessage (message: EncodedMessage): Promise<void> { try { await this.pubSubService.verifyMessage(message); const decryptedMessage: string = await this.pubSubService.decryptMessage(message); const parsedMessage: PubSubMessage<MyMessage> = JSON.parse(decryptedMessage); // process parsed message parsedMessage looks like: {meta: object, payload: MyMessage} message.ack(); } catch (e) { message.nack(); } }
    • Pull for messages: In constructor run this.registerPubSubPull();. The implementation can look as follows:

      import {EncodedMessage, PubSubMessage, PubSubService} from '@erento/nestjs-module-google-pubsub'; interface MyMessage {} class MyClass { constructor(private readonly pubSubService: PubSubService) { this.registerPubSubPull(); } private registerPubSubPull (): void { this.pubSubService.listenOnSubscription( 'projects/project-name/subscriptions/pull-subscription-name', this.onSubscriptionMessage.bind(this), this.onSubscriptionError.bind(this), ); } private async onSubscriptionMessage (message: EncodedMessage): Promise<void> { // see section above how to read a message } private onSubscriptionError (message: EncodedRequest): void { Log.error(`Unexpected error happened with a message: ${JSON.stringify(message)}`); } }

Stay in touch

  • Erento's developers

License

This module is MIT licensed.

Socket

Product

Subscribe to our newsletter

Get open source security insights delivered straight into your inbox. Be the first to learn about new features and product updates.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc