/dynamodb_stream_fetcher

Dynamodb Stream Fetcher is a basic library to fetch messages from a Dynamodb stream without using the multilang daemon. It works as a simple poller by launching child processes for each stream that needs to be monitored.

Primary LanguageJavaScript

Dynamodb Stream Fetcher

Dynamodb Stream Fetcher is a basic library to fetch messages from a Dynamodb stream without using the multilang daemon. It works as a simple poller by launching child processes for each stream that needs to be monitored.

(Dynamodb-stream version of Kinesis Stream Fetcher)

(kinesis_stream_fetcher - http://github.com/supersid/kinesis_stream_fetcher)

Version 1.0.0 supports multiple partitions and launches a process for each paritition. The partitions config is no longer relevant as the information is not directly fetched from Amazon API.

Install

npm install dynamodb_stream_fetcher --save

Usage

Before starting development ensure that your AWS configuration parameters are present in your environment under the following variable.

export AWS_ACCESS_KEY_ID="ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="SECRET_ACCESS_KEY"
export AWS_REGION="ap-southeast-1"
export DYNAMODB_PARTITION_KEY="sweetcoffee"

Update

Version 1.2.0 includes a backward compatible support for instanceIds. Each instanceId identifies a deployment uniquely, thus allowing you to run multiple instances of Dynamodb Stream Fetcher.

This was a bug in the earlier versions where it assumed that the library would be used for a single instance

let streamConfig = {
    instanceId: 'instance-1',
    redisUrl: 'redis://localhost:6379',
    streams: [{
        name: 'development-transaction_events-1',
        partitions: 1
    },{
        name: 'test-transaction_events',
        partitions: 1
    }]
};
const DynamodbStreamFetcher = require('dynamodb_stream_fetcher');
let fetcher = new DynamodbStreamFetcher(streamConfig);
fetcher.on('message', (data) => {
  console.log(data);
})

Description

The consumer expects a redis connection to store the last read state of a stream. The first attempt is always to begin from the start of the stream.