Socket
Socket
Sign inDemoInstall

@erento/nestjs-module-google-pubsub

Package Overview
Dependencies
3
Maintainers
4
Versions
11
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@erento/nestjs-module-google-pubsub

NestJS module to work with Google Pub/Sub messages.


Version published
Maintainers
4
Weekly downloads
49
decreased by-7.55%
Bundle size
287.9 kB
Minified + gzipped

Weekly downloads

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.

FAQs

Last updated on 04 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc