RabbitMQ - 如何处理 2 个异步消息作为消费微服务?
RabbitMQ - How to handle 2 asynchronous messages as consuming microservice?
我有一个问题正在寻找解决问题的最佳方法。我们目前正致力于用微服务架构取代我们的软件单体。
我们想使用消息队列作为不同微服务之间的通信。
我们的一个微服务(邮件服务)需要在收到来自两个微服务的两条消息后做出反应。第一条消息提供有关已下订单的信息。它提供有关电子邮件内容和收件人的信息,第二条消息提供 link 附件,电子邮件应包含。
邮件服务应等到收到两封邮件。目前我计划将所有消息存储到数据库中(每条消息一个table)并每5秒检查一次信息是否存在并且可以发送电子邮件。
但我感觉也许 RabbitMQ 也提供了一种方法,所以我不需要自己开发来避免这两个消息之间的竞争条件。
你会用什么方法来解决这个问题?
我会更改消息模式,以便您拥有三个消息;
第一条包含订单信息的消息已发布。使用此消息的结果是发布包含附加信息的第二条消息。
处理包含附加信息的第二条消息并保留该信息。这是您发布第三条消息的地方。
第三条也是最后一条消息作为通知说 "hey, I now have everything needed to actually send the email"。
这样您就不必每 x 秒检查一次数据库,并且可以相当便宜地扩展消息工作流程。
希望对您有所帮助:)
我有一个问题正在寻找解决问题的最佳方法。我们目前正致力于用微服务架构取代我们的软件单体。
我们想使用消息队列作为不同微服务之间的通信。
我们的一个微服务(邮件服务)需要在收到来自两个微服务的两条消息后做出反应。第一条消息提供有关已下订单的信息。它提供有关电子邮件内容和收件人的信息,第二条消息提供 link 附件,电子邮件应包含。
邮件服务应等到收到两封邮件。目前我计划将所有消息存储到数据库中(每条消息一个table)并每5秒检查一次信息是否存在并且可以发送电子邮件。
但我感觉也许 RabbitMQ 也提供了一种方法,所以我不需要自己开发来避免这两个消息之间的竞争条件。
你会用什么方法来解决这个问题?
我会更改消息模式,以便您拥有三个消息;
第一条包含订单信息的消息已发布。使用此消息的结果是发布包含附加信息的第二条消息。
处理包含附加信息的第二条消息并保留该信息。这是您发布第三条消息的地方。
第三条也是最后一条消息作为通知说 "hey, I now have everything needed to actually send the email"。
这样您就不必每 x 秒检查一次数据库,并且可以相当便宜地扩展消息工作流程。
希望对您有所帮助:)