An effficient Nest.js Kinesis Producer based on Kevin Deng's blog piece
$ npm install nest-kinesis-producer
Add the Kinesis Producer to your App Module imports. It will register globally.
import { AppService } from './app.service';
import { Module } from '@nestjs/common';
@Module({
imports: [KinesisProducerModule.forRoot(new Kinesis())],
providers: [AppService],
})
export class AppModule {}
import { AppService } from './app.service';
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
@Module({
imports: [
KinesisProducerModule.forRootAsync({
useFactory: (cfg: ConfigService) => new Kinesis({credentials: cfg.getCreds()}),
inject: [ConfigService],
imports: [ConfigModule],
}),
),
],
providers: [AppService],
})
export class AppModule {}
import { hash } from 'crypto';
import { RetryingBatchKinesisPublisher } from "nest-kinesis-producer";
export class AppService {
constructor(private readonly kinesisPublisher: RetryingBatchKinesisPublisher){}
public async sendToKinesis(messages: string[]): Promise<void> {
const events = messages.map((x) => {
return {
PartitionKey: this.getPartitionKey(x),
Data: x
};
});
await this.kinesisPublisher.putRecords('fakeStreamName', events);
}
public getPartitionKey(mesage: string): string {
...
}
}
`launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"name": "vscode-jest-tests",
"request": "launch",
"args": ["--runInBand"],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"disableOptimisticBPs": true,
"program": "${workspaceFolder}/node_modules/jest/bin/jest",
"outputCapture": "std",
"skipFiles": [
"${workspaceFolder}/node_modules/**/*.js",
"${workspaceFolder}/lib/**/*.js",
"<node_internals>/**/*.js"
]
}
]
}
Pull requests are welcome. Please remember that commits must be made using Angular conventional-changelog
- Author - Benjamin Main
- Twitter - @Ben05920582
Nest-Kinesis-Producer is MIT licensed.