Microservices 聚合通知微服务
问题 我们目前正在设计新的通知微服务,但在如何处理聚合电子邮件方面遇到了问题。我们需要做的是,我们将在一个小时后发送一封电子邮件,总结所有已完成的操作,而不是在执行每个操作时发送一封电子邮件(可能在几分钟内超过20封) 到目前为止我们拥有的 到目前为止,我们建议使用这种消息传递模式,其中客户端服务是集群中的任何服务,Messagebot是我们的通知微服务Microservices 聚合通知微服务,microservices,Microservices,问题 我们目前正在设计新的通知微服务,但在如何处理聚合电子邮件方面遇到了问题。我们需要做的是,我们将在一个小时后发送一封电子邮件,总结所有已完成的操作,而不是在执行每个操作时发送一封电子邮件(可能在几分钟内超过20封) 到目前为止我们拥有的 到目前为止,我们建议使用这种消息传递模式,其中客户端服务是集群中的任何服务,Messagebot是我们的通知微服务 客户端服务向Messagebot发送一个通知,告知它将来需要发送某些内容 Messagebot将详细信息存储在其数据库中 Messagebot
{product\u id:SOME\u product\u id}
为什么要辩论
到目前为止,我们的想法是:
哪种结构最适合我们的情况?另外,了解我们的要求后,这类服务的正确设置是什么?(我们的其他假设正确吗?那么您的messagebot将
在我看来,你的messagebot被赋予了太多的任务。如果我在设计系统,我希望让messagebot更简单。服务应该封装编译电子邮件的知识,例如管理自己的模板等。这些服务将把编译好的电子邮件推送到一个队列中,以便messagebot能够接收和发送。messagebot中唯一的逻辑是从队列中拾取电子邮件并发送。通过这种方式,无论您将来将拥有多少服务,messagebot都将保持良好和简单 在不了解更多信息的情况下,很难解决您的查询:什么是模板id、任务id和文档id?此外,你没有考虑发送Messagebot的任何数据和它所需要的所有数据来做每件事的工作吗?完全同意,除非数据会在邮件发送周期到来的时候过时。这将是我们关注的问题。你可以考虑存储电子邮件(由所有其他服务发布)。在messagebot后面的数据库中,并在时机成熟时将其发送出去。显然,你需要在邮件发送后清空积压的邮件。
{
template_id: SOME_TEMPLATE_ID,
user_id: SOME_USER_ID,
objectid: SOME_OBJECT_ID
}
{
template_id: SOME_TEMPLATE_ID,
user_id: SOME_USER_ID,
required_objects: { task_id: SOME_TASK_ID, document_id: SOME_DOCUMENT_ID }
}