Idempotency under competing consumers vs. ordered log offsets
Under what delivery semantics do competing-consumer queues versus offset-based message logs produce duplicated or lost side effects, and what minimal consumer contract (idempotency key, dedupe window, offset checkpoint) makes each equivalent in observable effect?
The infrastructure choice is usually made on vendor convenience rather than on which failure mode the team can actually tolerate; a formal contract per topology turns an architectural debate into a testable property.
Message logs maintain ordered offsets where multiple consumers can read independently.
Message queues use competing consumers where processed items are removed from the queue.
Choosing the right messaging infrastructure depends on whether you need pub-sub streaming or point-to-point queuing.