A conceptual exploration of where parallelism should live in messaging systems — broker-visible (partitions, consumers, TCP connections) vs client-local (virtual threads, async tasks). Using Kafka Share Groups as context, the post introduces a simple formula for calculating required aggregate parallelism (rate × avg processing time) and argues that for highly parallel workloads, pushing parallelism to the client side is far more resource-efficient than scaling broker-managed units. It also notes the deprecation of the ParallelConsumer library and hints at the need for a new library combining client-side parallelism with Share Groups.

5m read timeFrom jack-vanlightly.com
Post cover image
Table of contents
Where should your unit of parallelism live?How many units of parallelism?
4 Impressions