![karafka logo](https://raw.githubusercontent.com/karafka/misc/master/logo/karafka_logotype_transparent2.png) [![Build Status](https://travis-ci.org/karafka/karafka.svg?branch=master)](https://travis-ci.org/karafka/karafka) [![Backers on Open Collective](https://opencollective.com/karafka/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/karafka/sponsors/badge.svg)](#sponsors) [![Join the chat at https://gitter.im/karafka/karafka](https://badges.gitter.im/karafka/karafka.svg)](https://gitter.im/karafka/karafka?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Framework used to simplify Apache Kafka based Ruby applications development. It allows programmers to use approach similar to standard HTTP conventions (```params``` and ```params_batch```) when working with asynchronous Kafka messages. Karafka not only handles incoming messages but also provides tools for building complex data-flow applications that receive and send messages. ## How does it work Karafka provides a higher-level abstraction that allows you to focus on your business logic development, instead of focusing on implementing lower level abstraction layers. It provides developers with a set of tools that are dedicated for building multi-topic applications similarly to how Rails applications are being built. Karafka based applications can be easily deployed to any type of infrastructure, including those based on: * Heroku * Capistrano * Docker ## Getting started If you want to get started with Kafka and Karafka as fast as possible, then the best idea is to just clone our example repository: ```bash git clone https://github.com/karafka/karafka-example-app ./example_app ``` then, just bundle install all the dependencies: ```bash cd ./example_app bundle install ``` and follow the instructions from the [example app Wiki](https://github.com/karafka/karafka-example-app/blob/master/README.md). **Note**: you need to ensure, that you have Kafka up and running and you need to configure Kafka seed_brokers in the ```karafka.rb``` file. If you need more details and know how on how to start Karafka with a clean installation, read the [Getting started page](https://github.com/karafka/karafka/wiki/Getting-started) section of our Wiki. ## Support Karafka has a [Wiki pages](https://github.com/karafka/karafka/wiki) for almost everything. It covers the whole installation, setup and deployment along with other useful details on how to run Karafka. If you have any questions about using Karafka, feel free to join our [Gitter](https://gitter.im/karafka/karafka) chat channel. Karafka dev team also provides commercial support in following matters: - Additional programming services for integrating existing Ruby apps with Kafka and Karafka - Expertise and guidance on using Karafka within new and existing projects - Trainings on how to design and develop systems based on Apache Kafka and Karafka framework If you are interested in our commercial services, please contact [Maciej Mensfeld (maciej@coditsu.io)](mailto:maciej@coditsu.io) directly. ## Notice Karafka framework and Karafka team are __not__ related to Kafka streaming service called CloudKarafka in any matter. We don't recommend nor discourage usage of their platform. ## References * [Karafka framework](https://github.com/karafka/karafka) * [Karafka Travis CI](https://travis-ci.org/karafka/karafka) * [Karafka Coditsu](https://app.coditsu.io/karafka/repositories/karafka) ## Note on Patches/Pull Requests Fork the project. Make your feature addition or bug fix. Add tests for it. This is important so we don't break it in a future versions unintentionally. Commit, do not mess with Rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull). Send me a pull request. Bonus points for topic branches. [![coditsu](https://coditsu.io/assets/quality_bar.svg)](https://app.coditsu.io/karafka/repositories/karafka) Each pull request must pass our quality requirements. To check if everything is as it should be, we use [Coditsu](https://coditsu.io) that combines multiple linters and code analyzers for both code and documentation. Unfortunately, it does not yet support independent forks, however you should be fine by looking at what we require. Please run: ```bash bundle exec rspec spec ``` to check if everything is in order. After that you can submit a pull request. ## Contributors This project exists thanks to all the people who contribute. [[Contribute]](CONTRIBUTING.md). ## Backers Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/karafka#backer)] ## Sponsors We are looking for sustainable sponsorship. If your company is relying on Karafka framework or simply want to see Karafka evolve faster to meet your requirements, please consider backing the project. [[Become a sponsor](https://opencollective.com/karafka#sponsor)] Please contact [Maciej Mensfeld (maciej@coditsu.io)](mailto:maciej@coditsu.io) directly for more details.