【问题标题】:AKKA.NET - Queuing and RetryAKKA.NET - 排队和重试
【发布时间】:2018-09-25 20:05:36
【问题描述】:

作为将我们的应用程序从巨大的单体转变为麦克风的一部分,我们正在开发一个通知微服务,所有其他模块都可以使用它来发送电子邮件、短信、推送等通知通知等。

此通知服务的一个客户端是我们计划开发的 windows 服务,它会触发各种事件的电子邮件通知,例如用户注册、密码重置等。 Windows 服务将有 2 个部分

  1. 一个基于 REST 的 API,可由用户注册等模块调用以触发通知。当调用 ReST API 时,该服务将加载相应的模板,填写必要的值并调用通知服务发送电子邮件。如果 api 调用失败,通知的详细信息将被发送到 后台任务,该任务将重试该操作固定次数,然后放弃并引发错误

  2. 后台任务将在放弃并引发错误之前重试操作固定次数以发送通知

我们最初的计划是使用队列在两个部分之间进行通信。流程会是这样的

Client --> ReST API --> 加载模板和填充值 -> 调用通知服务 --> 将消息添加到队列(以防通知失败)--> 后台任务拉队列的消息 --> 重试操作 --> 将通知标记为失败,以防最大重试失败(将手动处理

另一种方法不是使用队列,而是使用持久的 AKKA.NET 参与者来执行此操作,因为 AKKA.NET 支持邮箱但尚未找到任何类似的用例...如果我们选择,我们是否走在正确的道路上akka.net...请发送你的 cmets

【问题讨论】:

    标签: notifications windows-services akka.net akka.net-persistence


    【解决方案1】:

    我认为队列是一个适当的抽象 - 将一些消息发布到队列并让通知服务使用它们。如果通知服务关闭,它们会一直排队,直到它恢复。像 Kafka 这样的东西可能很适合这个,但你可能可以在你当前使用的任何数据库中实现一些东西。除非您对事物有更复杂的逻辑,否则我可能不会走 Actor 路线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2014-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多