Kafka is a wonderful technology that punts on the most difficult part of distributed stream processing and makes it the consumer's problem.
That is sort of danced around a bit in this article where the author is talking about dropped messages, etc. It is tempting to say "use a stream server" but ultimately stream servers make head-of-line accounting the consumer's responsibility. That's usually solved with some kind of (not distributed) lock.