Giter Club home page Giter Club logo

kafka-flow's Introduction

Build Master

KafkaFlow

A flexible framewrok to process Kafka messages with multithreading, middlewares, serialization, compression, typed handlers and message order support.

Features

  • Fluent configuration
  • In memory message buffering
  • Improve client code testability
  • Multiple cluster support
  • Multiple workers consuming the same topic (limited by the machine resources)
  • Message order guarantee for the same partition key
  • Multiple consumer groups in the same topic
  • Multiple topics in the same consumer
  • Different work distribution strategies
  • Middleware support for consumers and producers implementing IMessageMiddleware interface
  • Serialization middleware (ProtoBuf and Json are shipped with the framework but they have different nuget packages, you can support custom serialization using IMessageSerializer interface)
  • Compression middleware (Gzip is shipped with the framework but it has a different nuget package, you can support custom compressions using IMessageCompressor interface)
  • Graceful shutdown (waits for the message processor ends to shutdown)
  • Store message offset only when message processing ends, avoiding message loss (or you can store it manually)

What can we do with Middlewares?

  • Read or write message headers
  • Ignore messages
  • Manipulate the message
  • Custom error handling and retry policies
  • Monitoring and performance measurement
  • Tracing
  • Maintain compatibility with other frameworks
  • And so on...

Installation

You should install KafkaFlow with NuGet:

    Install-Package KafkaFlow

Or via the .NET Core command line interface:

    dotnet add package KafkaFlow

Either commands, from Package Manager Console or .NET Core CLI, will download and install KafkaFlow and all required dependencies.

Usage

See the samples folder to see Consumer and Consumer samples

Contributing

  1. Fork this repository
  2. Follow project guidelines
  3. Do your stuff
  4. Open a merge request using the template

Disclaimer

By sending us your contributions, you are agreeing that your contribution is made subject to the terms of our Contributor Ownership Statement

Maintainers

License

MIT

kafka-flow's People

Contributors

filipeesch avatar 3cpt avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.