All Projects → mmolimar → Kukulcan

mmolimar / Kukulcan

Licence: apache-2.0
A REPL for Apache Kafka

Programming Languages

python
139335 projects - #7 most used programming language
java
68154 projects - #9 most used programming language
shell
77523 projects
scala
5932 projects

Projects that are alternatives of or similar to Kukulcan

Kattlo Cli
Kattlo CLI Project
Stars: ✭ 58 (-43.69%)
Mutual labels:  apache-kafka, kafka, kafka-streams, kafka-connect, kafka-producer, kafka-consumer
Kafka Ui
Open-Source Web GUI for Apache Kafka Management
Stars: ✭ 230 (+123.3%)
Mutual labels:  apache-kafka, kafka, kafka-streams, kafka-connect, kafka-producer
Librdkafka
The Apache Kafka C/C++ library
Stars: ✭ 5,617 (+5353.4%)
Mutual labels:  apache-kafka, kafka, kafka-producer, kafka-consumer
Karafka
Framework for Apache Kafka based Ruby and Rails applications development.
Stars: ✭ 1,223 (+1087.38%)
Mutual labels:  apache-kafka, kafka, kafka-producer, kafka-consumer
Kq
Kafka-based Job Queue for Python
Stars: ✭ 530 (+414.56%)
Mutual labels:  apache-kafka, kafka, kafka-producer, kafka-consumer
Debezium
Change data capture for a variety of databases. Please log issues at https://issues.redhat.com/browse/DBZ.
Stars: ✭ 5,937 (+5664.08%)
Mutual labels:  apache-kafka, kafka, kafka-connect, kafka-producer
kafka-encryption
Kafka End to End Encryption
Stars: ✭ 44 (-57.28%)
Mutual labels:  kafka-consumer, kafka-producer, kafka-streams
scylla-cdc-source-connector
A Kafka source connector capturing Scylla CDC changes
Stars: ✭ 19 (-81.55%)
Mutual labels:  kafka-connect, apache-kafka, kafka-producer
Rafka
Kafka proxy with a simple API, speaking the Redis protocol
Stars: ✭ 49 (-52.43%)
Mutual labels:  kafka, kafka-producer, kafka-consumer
Kafka Tutorials
Kafka Tutorials microsite
Stars: ✭ 144 (+39.81%)
Mutual labels:  apache-kafka, kafka, kafka-streams
Trubka
A CLI tool for Kafka
Stars: ✭ 296 (+187.38%)
Mutual labels:  kafka, kafka-producer, kafka-consumer
Awesome Kafka
A list about Apache Kafka
Stars: ✭ 397 (+285.44%)
Mutual labels:  apache-kafka, kafka, kafka-streams
Kspp
A high performance/ real-time C++ Kafka streams framework (C++17)
Stars: ✭ 80 (-22.33%)
Mutual labels:  kafka, kafka-streams, kafka-connect
Apachekafkatutorials
Example Code for Kafka Tutorials @ Learning Journal
Stars: ✭ 155 (+50.49%)
Mutual labels:  apache-kafka, kafka-producer, kafka-consumer
Qbusbridge
The Apache Kafka Client SDK
Stars: ✭ 272 (+164.08%)
Mutual labels:  kafka, kafka-producer, kafka-consumer
Azkarra Streams
🚀 Azkarra is a lightweight java framework to make it easy to develop, deploy and manage cloud-native streaming microservices based on Apache Kafka Streams.
Stars: ✭ 146 (+41.75%)
Mutual labels:  apache-kafka, kafka, kafka-streams
Strimzi Kafka Operator
Apache Kafka running on Kubernetes
Stars: ✭ 2,833 (+2650.49%)
Mutual labels:  kafka, kafka-streams, kafka-connect
Hivemq Mqtt Tensorflow Kafka Realtime Iot Machine Learning Training Inference
Real Time Big Data / IoT Machine Learning (Model Training and Inference) with HiveMQ (MQTT), TensorFlow IO and Apache Kafka - no additional data store like S3, HDFS or Spark required
Stars: ✭ 204 (+98.06%)
Mutual labels:  kafka, kafka-streams, kafka-connect
Cp Docker Images
[DEPRECATED] Docker images for Confluent Platform.
Stars: ✭ 975 (+846.6%)
Mutual labels:  kafka, kafka-streams, kafka-connect
Demo Scene
👾Scripts and samples to support Confluent Demos and Talks. ⚠️Might be rough around the edges ;-) 👉For automated tutorials and QA'd code, see https://github.com/confluentinc/examples/
Stars: ✭ 806 (+682.52%)
Mutual labels:  kafka, kafka-streams, kafka-connect

kukulcan Build Status

K'uk'ulkan ("Feathered Serpent") is the name of a deity which was worshipped by the Yucatec maya people. You can read a lot more in books or on the Internet about it and will see that, in someways, is related to the wind and water.

Beyond the origin of this name I reused to name this project, Kukulcan provides an API and different sort of REPLs to interact with your streams or administer your Apache Kafka deployment.

It supports POSIX and Windows OS and Scala, Java and Python programming languages.

Motivation

As Kafka users (developers, devops, etc.), we have to interact with it in different ways. Maybe using the command-line tools it provides, an external tool to look for a specific info, an IDE to develop a snippet in order to test something... but what if you could do all those things in the same interface with the flexibility of a REPL to do exactly what you need?

This is the aim of this project: enabling a simple interface to interact with your Kafka cluster taking advantage of its rich API plus some additional utils included and make your interaction better.

Getting started

Requirements

Before starting, you'll need to have installed JDK 11 and SBT. Additionally, if you want to use the PyKukulcan REPL, you'll also need Python (tested 2.7, 3.4, 3.5, 3.6, and 3.7 versions) and pip installed.

Building from source

Just clone the kukulcan repo and "kukulcan-it":

git clone https://github.com/mmolimar/kukulcan.git && cd kukulcan

sbt kukulcan

Configuration

In the config directory, you'll find some files with the configurations for each of the APIs Kukulcan provides. All the possible configs for each API are in these files with their description so, if you need to set some specific configs for your environment, you should set them there before starting.

Also, there is an important environment variable named KUKULCAN_HOME. If not set, its default value will be the root folder of the cloned project. When starting a Kukulcan REPL, it will look for this environment variable and read the properties files contained in its config subdirectory.

Modules

The project contains three subprojects or modules described below but, if you generate the Scala docs executing sbt doc in the command line, you'll be able to see a more detailed description.

kukulcan-api

Contains all the Scala and Java classes to interact with Kafka and extending the Kafka API to enable new functionalities. This API contains:

  • KAdmin: grouped utils for administrative operations for topics, configs, ACLs and metrics.
  • KConnect: methods to execute requests against Kafka Connect REST API.
  • KConsumer and KProducer: Kafka consumer/producer with some extra features.
  • KStreams: extends Kafka Streams to see how your topology is (printing it in a graph).
  • KSchemaRegistry: to interact and manage schemas in Confluent Schema Registry.
  • KKsql: client for querying Confluent KSQL server and integrated with the KSQL-CLI.

kukulcan-repl

Enables two sort of entry points for the REPLs: one based on the Scala REPL and the other based on JShell.

Additionally, it includes the logic to read and reload your configurations stored the config directory transparently.

pykukulcan

This module includes the needed bindings to use Kukulcan with Python via py4j. By now, the only bindings available are for the REPL (in Java).

Running the REPL

Kukulcan takes advantage of multiple functionalities we already have in Java, Scala and other tools to build a custom REPL. Actually, the project enables four type of REPLs with Ammonite, Scala, JShell and Python.

After building the source, you'll be able to start any of the following REPL options. Here are a few examples you can do with Kukulcan:

  • Graphical representation of a topology in Kafka Streams:

  • Kafka Connect interaction:

  • Managing schemas in Schema Registry:

  • Interacting with KSQL server and using the KSQL-CLI:

NOTE: The REPLs have already the Kukulcan imports: com.github.mmolimar.kukulcan in case of the Scala and Ammonite REPLs and com.github.mmolimar.kukulcan.Kukulcan in case of the JShell REPL. So you just have to start typing kukulcan.<option>. or Kukulcan.<option>. respectively.

Kukulcan Ammonite REPL

Ammonite is an improved Scala REPL with a lot of interesting features you can find very useful to load scripts or even code in an easier way. Obviously, you must install it previously.

It already includes all dependencies, and the Kukulcan Scala API to interact with Kafka.

NOTE: If you're going to use Kukulcan with Ammonite, you'll have to publish the project in local, executing sbt publishLocal.

To execute this REPL you just have to type:

./bin/kukulcan-amm

I do recommend using this REPL even though the other ones are fine as well. The only drawback here is that Ammonite-REPL does not support Windows systems.

Kukulcan Scala REPL

A Scala REPL including all dependencies and the Kukulcan Scala API to interact with Kafka.

To execute this REPL you just have to type:

./bin/kukulcan

For Windows OS:

bin\kukulcan.cmd

Kukulcan JShell REPL

An enriched Java JShell to interact with Kafka including all dependencies and imports from the Kukulcan Java API.

To execute this REPL you just have to type:

./bin/jkukulcan

For Windows OS:

bin\jkukulcan.cmd

PyKukulcan REPL

A Python shell including the needed bindings with Kukulcan Scala API via Py4J.

NOTE: If you're going to use the PyKukulcan REPL, you must have Python and pip installed. Then, install pykukulcan in this way: pip install python/ -r python/requirements.txt

To execute this REPL you just have to type:

./bin/pykukulcan

For Windows OS:

bin\pykukulcan.cmd

TODOs

  • [ ] Tools in the KAdmin API.
  • [ ] Integration with REST Proxy.
  • [ ] API for Python.

Contribute

License

Released under the Apache License, version 2.0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].