== Pulsar: the subscription type decides == 12 messages, keys A/B/C, values 1..12 in order, two consumers per subscription, receiverQueueSize 1 so the first consumer cannot take the whole backlog. Shared subscription, which consumers saw each key: A -> [consumer-1, consumer-2] B -> [consumer-1, consumer-2] C -> [consumer-1, consumer-2] Key_Shared subscription, which consumers saw each key: A -> [consumer-1] B -> [consumer-1] C -> [consumer-1] A Shared subscription round-robins individual messages, so messages with the same key end up on different consumers and can be processed at the same time: there is no per-key order left to speak of. Key_Shared hashes the key to one consumer, which is Kafka's guarantee -- except that the assignment belongs to the subscription and is recomputed as consumers come and go, rather than being fixed by a partition count chosen when the topic was created.