如何在 SNS 和 SQS 中处理 "resend" 邮件

How to handle "resend" email in SNS and SQS

我有一个名为 onboard-user 的 SNS 主题。很多微服务订阅了这个话题

例如:

Emai微服务-发送邮件

系统首选项微服务-设置默认值

这些微服务中有一个订阅 onboard-user SNS 主题的队列。

现在如果发给用户的邮件需要重发,应该怎么处理呢? onboard-user 在这种情况下不应收到新消息,因为它有其自身的目的,我们不希望通知所有收听它的微服务。

使用备用 SNS 主题来发送电子邮件听起来不是一个好主意,而且有点矫枉过正。正确的处理方式是什么?

为什么需要重新发送电子邮件?由于暂时性错误或由于最终用户启动的某些业务逻辑?解决方案取决于问题。我会争辩说,如果您检测到消息需要是最新消息的情况,您可以:(A) 维护单独的重新发送电子邮件 SQS 队列或 (B) 在现有电子邮件队列中放置一条新消息,其中包含一个字段,表明这是一个重新发送。

由于 SQS 相当便宜,我可以倾向于 (A)。

如果我的理解是正确的,您有一个 SNS 主题可以进行多个处理,这就是多个微服务正在侦听它的原因。如有不妥请指正。 如果是这种情况,更好的选择是: 一种。隔离电子邮件处理 - 为电子邮件保留一个单独的 SNS 主题,例如'inform-user' 并用它来重试 b.如果您不能隔离,那么上述场景中的唯一选择是在消息本身中包含“状态”。这意味着在消息中有一个属性来指示它用于“重试”,然后侦听器微服务应该进行相应的处理。