代码之家  ›  专栏  ›  技术社区  ›  Dominik Heim

RabbitMQ-如何将2条异步消息作为消费微服务来处理?[已关闭]

  •  -1
  • Dominik Heim  · 技术社区  · 7 年前

    我有一个问题,就是寻找解决问题的最佳方法。我们目前正致力于用微服务架构取代我们的软件整体。

    我们希望使用消息队列作为不同微服务之间的通信。

    我们的一个微服务(邮件服务)需要在收到来自两个或多个微服务的两条消息后做出反应。第一条消息提供有关已下订单的信息。它提供有关电子邮件内容和收件人的信息,第二条消息提供指向附件的链接,电子邮件应包括。

    邮件服务应该等到收到这两条消息。目前,我计划将所有消息存储到数据库中(每条消息一个表),并每5秒钟检查一次是否存在这两个信息以及是否可以发送电子邮件。

    但我觉得RabbitMQ可能也提供了一种方法,所以我不需要自己开发来避免这两条消息之间的竞争条件。

    你会用什么方法来解决这个问题?

    1 回复  |  直到 7 年前
        1
  •  1
  •   user9244629 user9244629    7 年前

    我会更改消息模式,以便您有三条消息;

    1. 发布包含订单信息的第一条消息。使用此消息的结果是发布包含其他信息的第二条消息。

    2. 处理包含附加信息的第二条消息,并保存该信息。这是发布第三条消息的地方。

    3. 第三条也是最后一条消息作为通知,告诉我们“嘿,我 现在 拥有实际发送电子邮件所需的一切”。

    这样,您就不必每隔x秒检查一次数据库,并且可以非常便宜地扩展消息工作流。

    希望有帮助:)