Skip to content

A TypeScript port for Efficient Kinesis Producing for Interpreted code in Lambda.

License

Notifications You must be signed in to change notification settings

benMain/nest-kinesis-producer

Repository files navigation

Kinesis Logo

Description

An effficient Nest.js Kinesis Producer based on Kevin Deng's blog piece

Installation

$ npm install nest-kinesis-producer

Adding 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

License

Nest-Kinesis-Producer is MIT licensed.

About

A TypeScript port for Efficient Kinesis Producing for Interpreted code in Lambda.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •