Project

kcl-rb

0.01
No release in over 3 years
Low commit activity in last 3 years
A pure ruby interface for Amazon Kinesis Client.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 12.0
~> 3.0
~> 0.86.0

Runtime

 Project Readme

kcl-rb

Overview

The Amazon Kinesis Client Library for Pure Ruby (Amazon KCL) enables Ruby developers to easily consume and process data from Amazon Kinesis.

Already KCL for Ruby is provided by AWS, but Java is required for the operating environment because MultiLangDaemon is used. kcl-rb is built on Pure Ruby, not depend on Java.

Installation

Add this line to your application's Gemfile:

gem 'kcl-rb'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install kcl-rb

Usage

It's okay if you develop it according to the KCL specifications.

Implement the RecordProcessor

class RecordProcessor < Kcl::RecordProcessor
  def after_initialize(initialization_input)
    puts "SHARD_ID: #{initialization_input.shard_id}"
  end

  def process_records(records_input)
    puts "Current behind: #{records_input.millis_behind_latest}"
    records_input.records.each do |record|
      puts "Record: #{record}"
    end
  end

  def shutdown(shutdown_input)
    puts "Shutdown reason: #{shutdown_input.shutdown_reason}"

    if shutdown_input.shutdown_reason == Kcl::Workers::ShutdownReason::TERMINATE
      shutdown_input.record_checkpointer.update_checkpoint(nil)
    end
  end
end

Implement a Class Factory for the RecordProcessor

class RecordProcessorFactory < Kcl::RecordProcessorFactory
  def create_processor
    RecordProcessor.new
  end
end

Initialize KCL configurations

Kcl.configure do |config|
  config.aws_region = 'ap-northeast-1'
  config.aws_access_key_id = 'dummy'
  config.aws_secret_access_key = 'dummy'
  config.dynamodb_endpoint = 'https://localhost:4566'
  config.dynamodb_table_name = 'kcl-rb'
  config.kinesis_endpoint = 'https://localhost:4566'
  config.kinesis_stream_name = 'kcl-rb'
  config.use_ssl = false
end

If you want to see all the setting items, please see config class file.

Run a Worker

worker_id = 'kcl-worker'
factory = RecordProcessorFactory.new
Kcl::Worker.run(worker_id, factory)

If you want more concrete example, look under the demo directory.

Development

Prerequisites

  • Install Ruby 2.7.1
  • Install docker
  • Install Terraform

Build & Run for RSpec

Create Kinesis resources on localstack using Terraform

$ docker-compose up -d
$ cd terraform
$ terraform init
$ terraform apply

Build dependencies.

$ bundle install --path vendor/bundle

And run RSpec.

$ bundle exec rspec

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/waka/kcl-rb.

License

The gem is available as open source under the terms of the MIT License.