@gojob/nest-cloud-pub-sub-transport
v1.1.10
Published
A Custom Transport strategy of the NestJS microservices pattern for Cloud Pub/Sub.
Downloads
215
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/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 |