Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

6
  • Thanks, that seems like a practical solution. However, could you elaborate on why you say a solution is technically impossible? Do you have a source to support this? Commented Jan 8 at 9:57
  • en.wikipedia.org/wiki/Two_Generals%27_Problem Commented Jan 8 at 11:08
  • My understanding is that it exactly-once delivery is not possible but exactly-once processing is: exactly-once.github.io/posts/exactly-once-delivery/#how Commented Jan 8 at 12:10
  • it depends on what kind of errors you want to consider. Usually there is some level of crazy where the system says: "You just have to deal with it if this happens" The point of my answer is to have a process that can pickup when these crazy errors occur. If they ever do. Unlike your transaction example, if the db crashes I will have a bunch of rows saying "these MIGHT have been refunded" Commented Jan 8 at 12:20
  • Note that OP is talking about a queue system (like Kafka) which by design guarantess at-least-once delivery. This means the queue guarantees that each message is delivered, just not how many times (and possible also not in which order). The "Two Generals Problem" doesn't really apply. Commented Jan 8 at 13:56