【发布时间】:2018-09-02 04:27:07
【问题描述】:
我有一个问题正在寻找解决问题的最佳方法。我们目前正在努力用微服务架构取代我们的软件单体。
我们希望使用消息队列作为不同微服务之间的通信。
我们的一个微服务(邮件服务)需要在收到来自两个多个微服务的两条消息后做出反应。第一条消息提供有关已下订单的信息。它提供有关电子邮件内容和收件人的信息,第二条消息提供附件链接,电子邮件应包括。
邮件服务应该等到两封邮件都收到。目前我计划将所有消息存储到数据库中(每条消息一个表)并每 5 秒检查一次是否存在两个信息并且可以发送电子邮件。
但我觉得也许 RabbitMQ 也提供了一种方法,所以我不需要自己开发来避免这两条消息之间的竞争条件。
您有什么方法来解决这个问题?
【问题讨论】:
-
听起来您有一个编排(由任一消息触发,并且可能与消息中的某些数据相关)。 Akka 可能是一种选择,但如果您的企业中有很多这样的要求,那么可能值得考虑使用规则引擎或事件流处理器,例如流口水。
标签: java c# rabbitmq message-queue microservices