|
| 1 | +# Kafka and Clojure - Immutable event streams |
| 2 | + |
| 3 | +>#### Warning::This workshop has only just started to be written |
| 4 | +
|
| 5 | + |
| 6 | + |
| 7 | + |
| 8 | +[Kafka](https://kafka.apache.org/) is Kafka is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, extremely fast and runs in production in thousands of companies (Braintree). |
| 9 | + |
| 10 | +[Clojure](https://clojure.org/) is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language, yet remains completely dynamic – every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection. |
| 11 | + |
| 12 | +## Why Kafka and Clojure |
| 13 | + |
| 14 | +* Easy interaction with and well-maintained libraries for other JVM-based systems (e.g. Kafka and ElasticSearch) |
| 15 | +* Concurrency and IPC capabilities |
| 16 | +* Clojure's sequence abstractions simplified the code and made testing easy |
| 17 | + |
| 18 | + |
| 19 | +## Tutorials |
| 20 | +* [Apache Kafka - quickstart](https://kafka.apache.org/quickstart) |
| 21 | +* [Part 1: Apache Kafka for beginners - What is Apache Kafka - CloudKarafka](https://www.cloudkarafka.com/blog/2016-11-30-part1-kafka-for-beginners-what-is-apache-kafka.html) |
| 22 | +* [Cloudurable Kafka Tutorial](http://cloudurable.com/blog/kafka-tutorial/index.html) - current tutorial for Meet-a-mentor study group |
| 23 | +* [Apache Kafka Tutorial - TutorialsPoint](https://www.tutorialspoint.com/apache_kafka/index.htm) |
| 24 | +* [Kafka in Clojure](https://techblog.roomkey.com/posts/clojure-kafka.html) |
| 25 | +* [Writing a Kafka Producer and High Level Consumer in Clojure](https://wtfleming.github.io/2015/01/14/kafka-clojure-producer-consumer/) |
| 26 | +* [Hello World Kafka](https://github.com/SubhaSingh/hello_world_kafka) |
| 27 | +* |
| 28 | + |
| 29 | + |
| 30 | +## Libraries and projects |
| 31 | +* [franzy](https://github.com/clj-kafka/franzy) - suite of Clojure libraries for Apache Kafka. It includes libraries for Kafka consumers, producers, partitioners, callbacks, serializers, and deserializers. |
| 32 | +* [Kafka Streams Clojure](https://github.com/bobby/kafka-streams-clojure) - Clojure transducers interface to Kafka Streams. This combo provides the best of both worlds for building streaming applications on Kafka with Clojure |
| 33 | +* [milena](https://github.com/dvlopt/milena) - This Kafka client library allows the user to exchange records while speaking clojure |
| 34 | + |
| 35 | + |
| 36 | +## Presentations on Kafka |
| 37 | +* [Introduction to Apache Kafka by James Ward](https://www.youtube.com/watch?v=UEg40Te8pnE) |
| 38 | +* [Building a data pipeline with Clojure and Kafka](https://speakerdeck.com/davidpick/building-a-data-pipeline-with-clojure-and-kafka) |
| 39 | +* [Lisp in the Machine - Clojure at Braintree](https://vimeo.com/138748699) |
| 40 | +* [Ployconf 15 - The LISP in the Machine A Clojure experience report from Braintree / Joe Nash](https://www.youtube.com/watch?v=0D3jev1E5ks) |
| 41 | +* [One Million Clicks per Minute with Kafka and Clojure - Devon Peticolas](https://www.youtube.com/watch?v=VC_MTD68erY) |
| 42 | +* [From REST to CQRS with Clojure, Kafka, & Datomic - Bobby Calderwood](https://www.youtube.com/watch?v=qDNPQo9UmJA&t=8s) |
| 43 | +* [David Pick - Building a Data Pipeline with Clojure and Kafka](https://www.youtube.com/watch?v=6xlyWjqFDWs) |
| 44 | +* [Lambda Days 2018 - Andrea Crotti - Tame Kafka streams with Clojure](https://www.youtube.com/watch?v=OC2KVaLQihs) |
| 45 | +* ["Commander: Better Distributed Applications through CQRS and Event Sourcing" by Bobby Calderwood](https://www.youtube.com/watch?v=B1-gS0oEtYc) |
| 46 | +* [Streaming Data Platforms & Clojure with Derek Troy-West](https://www.youtube.com/watch?v=4sUaF4m5TWI) |
| 47 | +* [Clojure at 4,000 msg/s-What We Learned, Loved, and Loathed - Nathan Barnett](https://www.youtube.com/watch?v=zwuFJovzdHg) |
| 48 | +* [Managing One of the World's Largest Clojure Code Bases - Donevan Dolby](https://www.youtube.com/watch?v=iUC7noGU1mQ) |
| 49 | +* [Reducing Microservice Complexity with Kafka and Reactive Streams - by Jim Riecken](https://www.youtube.com/watch?v=k_Y5ieFHGbs&t=2s) |
| 50 | +* [PolyConf 15: Distributed systems the easy way with Clojure and Mesos / Pierre-Yves Ritschard](https://www.youtube.com/watch?v=Tz-wwjhqEEM) |
| 51 | + |
| 52 | + |
| 53 | +<div style="width:80%; margin:auto;"> |
| 54 | +This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License (including images & stylesheets). |
| 55 | + |
| 56 | +<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">Spacemacs, Practicalli</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="spacemacs.practical.li" property="cc:attributionName" rel="cc:attributionURL">John Stevenson</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="https://github.com/practicalli/spacemacs" rel="dct:source">Spacemacs, Practicalli on Gitub</a>.<br />Permissions beyond the scope of this license may be available at <a xmlns:cc="http://creativecommons.org/ns#" href="https://twitter.com/jr0cket" rel="cc:morePermissions">@jr0cket</a>. |
| 57 | +</div> |
| 58 | + |
| 59 | + |
| 60 | + |
| 61 | +> ####TODO::Introductory video |
| 62 | +> Why kafka and Clojure. What is an immutable event stream |
| 63 | +
|
| 64 | +<iframe width="800" height="420" src="https://www.youtube.com/embed/Uuwg-069NYE?ecver=1" frameborder="0" allowfullscreen></iframe> |
| 65 | + |
| 66 | +<table> |
| 67 | + <tr> |
| 68 | + <td> |
| 69 | + <a href="why-spacemacs/index.html"><img src="images/button-why-spacemacs.png" /></a> |
| 70 | + </td> |
| 71 | + <td> |
| 72 | + <a href="before-you-start/index.html"><img src="images/button-before-you-start.png" /></a> |
| 73 | + </td> |
| 74 | + <td> |
| 75 | + <a href="install-spacemacs/index.html"><img src="images/button-install-spacemacs.png" /></a> |
| 76 | + </td> |
| 77 | + <td> |
| 78 | + <a href="create-a-project/index.html"><img src="images/button-code-with-clojure.png" /></a> |
| 79 | + </td> |
| 80 | + </tr> |
| 81 | +</table> |
0 commit comments