Notifications AKKA.NET-排队并重试

Notifications AKKA.NET-排队并重试,notifications,windows-services,akka.net,akka.net-persistence,Notifications,Windows Services,Akka.net,Akka.net Persistence,作为将我们的应用程序从一个巨大的整体转变为一个麦克风的一部分,我们正在开发一个通知微服务,可供所有其他模块用于发送通知,如电子邮件、短信、推送通知等 此通知服务的一个客户端是我们计划开发的windows服务,它可以触发各种事件的电子邮件通知,如用户注册、密码重置等。windows服务将包含两个部分 一个基于REST的API,可以由诸如用户注册之类的模块调用以触发通知。调用RESTAPI时,此服务将加载适当的模板,填写必要的值,并调用通知服务发送电子邮件。如果api调用失败,通知的详细信息应发送给

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

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

  • 一个基于REST的API,可以由诸如用户注册之类的模块调用以触发通知。调用RESTAPI时,此服务将加载适当的模板,填写必要的值,并调用通知服务发送电子邮件。如果api调用失败,通知的详细信息应发送给后台任务,该任务将在放弃并引发错误之前重试固定次数的操作

  • 在放弃并引发错误之前,将在发送通知的固定次数内重试该操作的后台任务

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

    客户端-->ReST API-->加载模板和填充值->调用通知服务-->将消息添加到队列(在通知失败的情况下)-->后台任务提取队列消息-->重试操作-->在最大重试失败的情况下将通知标记为失败(将手动执行)


    与使用队列不同,另一种方法是使用持久的AKKA.NET参与者来实现这一点,因为AKKA.NET支持邮箱,但没有找到任何类似的用例……如果选择AKKA.NET,我们走的路是否正确……请发送您的评论

    我认为队列是一种适当的抽象方法-向队列发布一些消息d让通知服务使用它们。如果通知服务关闭时,他们会一直在队列中等待,直到它返回。类似卡夫卡的东西可能很适合这样做,但您可能可以在当前使用的任何数据库中实现某些东西。除非您有更复杂的逻辑,否则我可能不会走演员路线。

    我认为队列是对r this-将一些消息发布到队列,并让通知服务使用它们。如果通知服务当它停止时,他们会一直排队直到它恢复。类似卡夫卡的东西可能很适合这样做,但你可能可以在你当前使用的任何数据库中实现一些东西。除非你有更复杂的逻辑,否则我可能不会走演员路线