如何将Akka用于需要保证交付的解决方案?

时间:2016-11-27 19:48:47

标签: akka

我试图理解Akka何时有用,特别是指消息传递的无保证性质。来自Akka docs

  

如果你确实需要它[保证交付],通常你不会

问题是,我可以想到很少有可以接受丢失消息的情况。我到目前为止唯一的例子是:

  1. 服务只读请求的应用程序(因为如果消息丢失,客户端只能重试)。
  2. 状态不断以幂等方式发布(丢失的消息并不重要,因为下一个消息将很快发布)。
  3. 第一个是请求响应模式,因此不是真正的消息传递,第二个是状态的只读数据流,而不是表示必须对其执行的业务事件的消息。

    此外,通过声称保证交付太昂贵并始终倡导"告诉"他们的理念似乎与事件采购模式相矛盾(显然,保证交付对于事件采购至关重要,否则没有确定性的世界观)。

    所以,问题是:如果您有订购的情况,保证交货很重要(客户的行动必须按客户订购并且明显有保证)Akka是否合适?为什么一些其他系统已经具有这些语义,如某种队列(Kafka,activemq等)?

    Akka文档建议,应根据每个应用程序构建任何额外的保证。我的工作地点有类似的东西(保证消息传递层建立在无保证的传递语义之上),但这意味着所有的应用程序代码都与这一层交互,所以我不知道Akka提供的优势是什么在这种情况下的其他消息传递系统。

    我发现很难相信人们不关心邮件是否传递,特别是在谈论建立信用卡交易处理系统等时。

0 个答案:

没有答案