0.0.9 • Published 2 years ago

@develop-fapp/kinesis-streams v0.0.9

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

FarmáciasAPP Kinesis-Streams

Biblioteca para padronizar e facilitar a utilização do Kinesis como um broker de mensagens.

Como utilizar

Produtor

A classe KinesisStreamClient possui uma implementação default que instancia baseado na variável de ambiente BROKER_NAME, considerando que o broker utilizado esteja na mesma região e conta da AWS.

Se necessitar customizar, basta criar uma nova instância.

Sua utilização é feita por 2 métodos

  • sendStream - serializa 1 objeto para o stream.
  • sendBatch - envia N objetos para o stream.

A chave de partição é sempre opcional, e no caso de omissão é utilizado o nome do evento + uuid randomico.

Exemplo de utilização

import {
  defaultKinesisClient,
  KinesisStreamClient,
} from '@develop-fapp/kinesis-streams';

interface Example {
    id: string;
    name: string;
}

export class ExampleRepository {
  constructor(
    private readonly client: KinesisStreamClient = defaultKinesisClient,
  ) {}

  sendBatch(examples: Example[]): Promise<void> {
    return this.client.sendBatch(
      'my-example-changed',
      examples.map(example => ({
        data: example,
        key: `CUSTOM_PARTITION##${example.id}`,
      })),
    );
  }

  send(example: Example): Promise<void> {
    return this.client.sendStream(
      'my-example-changed',
      example,
      key: `CUSTOM_PARTITION##${example.id}`,
    );
  }
}

Consumidor

Para consumir os eventos disparados via lambda, é disponibilizado os wrappers

  • kinesisLambdaWrapper - Retona somente a lista de objetos do stream
  • kinesisLambdaRawWrapper - Retorna o payload completo do stream (quando necessário tratar nomes e posições)

Exemplos

import {
  kinesisLambdaWrapper,
  kinesisLambdaRawWrapper,
  Stream
} from '@develop-fapp/kinesis-streams';

interface Example {
    id: string;
    name: string;
}

export const simpleHandler = kinesisLambdaWrapper<Example>(
  async (inputs: Example[]) => {
    console.log(inputs); // print [{ id, name }]
    // ...
  }
);

export const complexHandler = kinesisLambdaRawWrapper<Example>(
  async (inputs: Stream<Example>[]) => {
    console.log(inputs); // print [{ streamName, data: { id, name } }]
    // ...
  }
);
0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago