This document discusses fault-tolerant consumption from Apache Kafka using the Kafka Java client and Akka Streams. It describes how to achieve at-least-once processing guarantees through committing offsets after message processing. It also discusses how to keep ordering when processing messages asynchronously and in parallel across partitions using reactive streams with back pressure. Micro-batching messages dynamically per partition can provide a latency-throughput trade-off. With the right abstractions, fault-tolerant Kafka consumption can be achieved with just a few extra lines of code.