Skip to content

A Custom Transport strategy of the NestJS microservices pattern for Cloud Pub/Sub

License

Notifications You must be signed in to change notification settings

gojob-1337/nest-cloud-pub-sub-transport

Repository files navigation

Nest Cloud Pub/Sub Transport

CircleCI

A Custom Transport strategy for Cloud Pub/Sub in Nest microservices.

TODO: in order to open-source it for NestJs, we must use loadPackage (from Server) to load @google-cloud/pubsub dynamically instead of having it installed in the dependenices of the project. Also, all types used from this package should be duplicated into local types/interfaces.

Getting started

yarn add @gojob/nest-cloud-pub-sub-transport
# or
npm install @gojob/nest-cloud-pub-sub-transport

Here is an example of implementation in your Nest application:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  const configService = app.get(ConfigService);

  app.connectMicroservice({
    strategy: new CloudServerPubSub({
      // "clientConfig": configuration passed "as is" to the Cloud PubSub client
      clientConfig: {
        keyFile: configService.get('GCP_KEY_FILE_PUBSUB'),
      },
      // "options": custom options, specific to this package
      options: {
        logger: app.get(LOGGER),
        // useful when your app is using a single topic & subscription
        defaultTopic: configService.get('DEFAULT_PUB_SUB_TOPIC'),
        defaultSubscription: configService.get('DEFAULT_PUB_SUB_SUBSCRIPTION'),
      },
    }),
  });

  await app.startAllMicroservices();
  await app.listen(3000);
}

Then use @EventPattern from @nestjs/microservices to decorate the event handlers which will be called when a new Pub/Sub message is received in your target topic(s).

Contributing

Command Action
yarn compile Ensure the TypeScript code can be compiled using tsc
yarn build Build the project (transpile the code to JavaScript)
yarn lint Lint the code (ESLint)
yarn test Run unit tests
yarn integration Run integration tests

About

A Custom Transport strategy of the NestJS microservices pattern for Cloud Pub/Sub

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published