作为将我们的应用程序从巨大的单体转变为麦克风的一部分,我们正在开发一个通知微服务,所有其他模块都可以使用它来发送电子邮件、短信、推送通知等通知。
该通知服务的一个客户端是我们计划开发的 windows 服务,它会针对用户注册、密码重置等各种事件触发电子邮件通知。Windows 服务将有 2 个部分
一个基于 REST 的 API,可由用户注册等模块调用以触发通知。当调用 ReST API 时,该服务将加载相应的模板,填写必要的值并调用通知服务发送电子邮件。如果 api 调用失败,通知的详细信息将被发送到后台任务,该任务将重试该操作固定次数,然后放弃并引发错误。
后台任务将在放弃并引发错误之前重试操作固定次数以发送通知
我们最初的计划是使用队列在两个部分之间进行通信。流程会是这样
客户端 --> ReST API --> 加载模板和填充值 -> 调用通知服务 --> 将消息添加到队列(以防通知失败)--> 后台任务拉取队列的消息 --> 重试操作--> 将通知标记为失败,以防最大重试失败(将手动占用
除了使用队列,另一种方法是使用持久的 AKKA.NET 参与者来执行此操作,因为 AKKA.NET 支持邮箱但尚未找到任何类似的用例......如果我们选择 akka.net,我们是否走在正确的道路上...请发送您的意见