我想开发一个邮件通知服务,以便向客户发送订单批准。订单数据位于非规范化视图(查询方)中,应填写到邮件模板中。然后,我们通过邮件通知服务以html字符串格式发送电子邮件。但是,订单状态应更改为"订单批准电子邮件已发送"。
我还尝试在微服务架构中实现CQRS,ES和DDD概念。 这个程序是否正确并且仍与概念保持一致?
但是,如果应用此程序,则用户无法获得响应"邮件已发送"实时。如何触发客户端/前端端邮件成功发送?因此,客户端无需刷新或重试对API的多次调用。
感谢。
答案 0 :(得分:1)
我刚刚写了一篇关于这个主题的帖子,你可以在这里找到它:How to Send Emails the Right Way in a CQRS System
简短版本是我会使用流程管理器。进程管理器侦听事件,并可以根据这些事件发出命令。如果您重新运行活动,请确保您有一种不重新发送电子邮件的机制。
关于UI。我有另一篇文章处理这个问题。您可以在此处找到它:4 Ways to Handle Eventual Consistency on the UI
这是一个简短的回答。一旦代码运行发送电子邮件,您认为电子邮件无法发送的频率如何?假设你有一个相当强大的系统,我希望它绝大部分时间都可以工作。所以假装它。并且只有在出现问题时才能找到通知用户和/或管理员用户的方法。如果你想得到想象,你可以使用Signalr或一些pub-sub框架之类的东西来向UI发送消息。
无论如何 - 希望有所帮助。