I think this sentence [1] helps to explain the difference:<p>&gt; When you create a subscription, the system establishes a sync point. That is, your subscriber is guaranteed to receive any message published after this point.<p>[1] <a href="https:&#x2F;&#x2F;cloud.google.com&#x2F;pubsub&#x2F;subscriber" rel="nofollow">https:&#x2F;&#x2F;cloud.google.com&#x2F;pubsub&#x2F;subscriber</a><p>With Kafka or Kinesis, I can write events to a stream&#x2F;topic completely independently of any consumer. I can then bring as many consumers online as I want, and they can start processing from the beginning of my stream if they want.  If one of my consumers has a bug in it, I can ask it to go back and start again. That&#x27;s what I mean by an immutable stream in Kafka or Kinesis.