我有一个问题,就是寻找解决问题的最佳方法。我们目前正致力于用微服务架构取代我们的软件整体。
我们希望使用消息队列作为不同微服务之间的通信。
我们的一个微服务(邮件服务)需要在收到来自两个或多个微服务的两条消息后做出反应。第一条消息提供有关已下订单的信息。它提供有关电子邮件内容和收件人的信息,第二条消息提供指向附件的链接,电子邮件应包括。
邮件服务应该等到收到这两条消息。目前,我计划将所有消息存储到数据库中(每条消息一个表),并每5秒钟检查一次是否存在这两个信息以及是否可以发送电子邮件。
但我觉得RabbitMQ可能也提供了一种方法,所以我不需要自己开发来避免这两条消息之间的竞争条件。
你会用什么方法来解决这个问题?
我会更改消息模式,以便您有三条消息;
发布包含订单信息的第一条消息。使用此消息的结果是发布包含其他信息的第二条消息。
处理包含附加信息的第二条消息,并保存该信息。这是发布第三条消息的地方。
第三条也是最后一条消息作为通知,告诉我们“嘿,我 现在 拥有实际发送电子邮件所需的一切”。
这样,您就不必每隔x秒检查一次数据库,并且可以非常便宜地扩展消息工作流。
希望有帮助:)