When building systems that process large volumes of messages synchronously, performance bottlenecks can quickly become a challenge specially with single-threaded designs. In this post, we’ll look at how leveraging worker threads in a Clojure-based Kafka consumer can significantly boost throughput & reduce total processing time. Using simple concurrency primitives, it’s possible to achieve parallelism & scale gracefully, all while keeping…
#clojure
3 posts
28 May 2025
1 Nov 2017
In my last post — Minimally Invasive API Versioning — I talked about how the Mobile API team at RetailMeNot handles versioning our Clojure APIs using a macro called versioned . This macro alone worked great for over a year, but we needed more. In this post I will cover how we evolved it to help ease our feature rollout…
18 Oct 2017
One of the challenges in developing an API for mobile apps is that there is not both a pleasant and reliable way of forcing them to upgrade. This means that in some cases your API needs to support apps that are several years old. The mobile API for RetailMeNot is no exception. This post walks through one of the ways…