@gojob/nest-cloud-pub-sub-transport
v1.1.11
Published
A Custom Transport strategy of the NestJS microservices pattern for Cloud Pub/Sub.
Maintainers
Keywords
Readme
Nest Cloud Pub/Sub Transport
A Custom Transport strategy for Cloud Pub/Sub in Nest microservices.
TODO: in order to open-source it for NestJs, we must use
loadPackage(fromServer) to load@google-cloud/pubsubdynamically 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-transportHere 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 |
