nest-kinesis-producer
v4.1.0
Published
Efficient Node Kinesis Producer Based on Kevin Deng's AWS Big Data Blog
Downloads
20
Readme
Description
An effficient Nest.js Kinesis Producer based on Kevin Deng's blog piece
Installation
$ npm install nest-kinesis-producerAdding the Global Module
Add the Kinesis Producer to your App Module imports. It will register globally.
Syncronously:
import { AppService } from './app.service';
import { Module } from '@nestjs/common';
@Module({
imports: [KinesisProducerModule.forRoot(new Kinesis())],
providers: [AppService],
})
export class AppModule {}Asyncronously:
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 {}Use the Publisher
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 {
...
}
}
VSCode debug testing
`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"
]
}
]
}Support
Pull requests are welcome. Please remember that commits must be made using Angular conventional-changelog
Stay in touch
- Author - Benjamin Main
- Twitter - @Ben05920582
License
Nest-Kinesis-Producer is MIT licensed.
