AMQP(RabbitMQ)并将工作流情况下的数据传递给其他消费者

时间:2018-04-13 05:05:33

标签: rabbitmq microservices amqp

我正在使用RabbitMQ 3.7,而且我发现我的微服务架构开始感到纠结和耦合。

enter image description here

我发现我已将消费者received事件中的消息发布到其他队列。 这感觉不对。但我不确定替代方案是什么,因为我从将消费者数据直接传递到下一个队列/任务的效率中受益。

请注意,上面只是一个示例,我运行的服务是相似的,并且相当依赖于工作流程(尽管它们可以独立运行!)

问题:

  1. 在微服务相互依赖的情况下,数据如何正常地从进程传递到进程(或消费者到发布者)。并不是说它们不能单独运行,而是它们在工作流场景中效果最好?

  2. 如果解决方案涉及从消费者的received事件中发布新消息,那么将数据提供给该微服务/进程的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我发现跨队列链接工作流可以创建比预期更复杂的工作流,另一方面,创建更简单的消费者应用程序可以创建更易于维护的代码。

通过拆分前两个步骤,您是否在代码中获得或失去了任何可扩展性或简单性?如果没有更详细的信息需要考虑,我可能不会拆分功能的前两部分。我没有看到直接存储抓取结果有什么问题。

我喜欢您的孤立消费者发送电子邮件,但您可能会考虑制作一个通用电子邮件发送消费者,您的任何应用程序都可以使用该消息,并使消息格式包含正确的邮件部分,并让消费者构建邮件并将其发送。

我不认为那里有一个"对"回答您的架构,而不是考虑在简单性/复杂性,可扩展性和可维护性之间找到适当的平衡。