给出:
[这里有些精神障碍我无法超越-很明显,例如,如果我们在提交到交换和数据库提交之间挂起,就会遇到问题。在这种情况下,我们可以发送两次消息。是的,我们可以在消费者方面实施双打检查-但在许多方面都非常昂贵。所以这是我的问题:有没有一种好的方法来确保subj?
Exactly once delivery is mathematically impossible。
为什么?考虑将文本发送给不可靠的朋友(我们都有)的情况。该特定朋友的消息阅读通知已禁用。您发短信给他看他是否有空吃晚饭。您需要等待几分钟才能得到答复。他没有回应。发生了什么? 他是否收到您的消息并忽略了(因为他很容易这样做)?如果是这样,也许他不想被打扰。再发送一条消息可能会惹恼他。您是否仍要再次发送消息? 您真是个无礼的人。
至少一次传递语义。
的消息,该消息实际上可能是第一次经过,也可能没有,但是您的电话指示错误,然后您再次发送。您不知道,现在已发送了消息的两个副本。那又是什么?
在现实世界中,人类通常善于处理重复信息。因此,对我们来说,至少一次交货通常是可以接受的。人类通常非常善于适应不可靠信使的现实。不幸的是,您必须找出答案,才能知道邮件是否已发送。底线
:如果保证交付很重要,请围绕至少一次交付语义设计系统。