如何使用消息传递架构将消息发送回发件人?

时间:2016-12-26 09:53:32

标签: messaging microservices nsq

我正在解决微服务与消息架构之间的通信。

我们说我有一个传统的应用程序,并且有UserPost Video个模块。

您可以使用它创建帖子和视频,但在此之前,我需要将用户名转换为用户ID。

enter image description here

一旦我将模块拆分为微服务,我就无法将它们链接在一起,而是直接访问微服务。

enter image description here

如果我想将用户名转换为ID,

我可以通过Messaging调用User服务中的Post服务,到目前为止一直很好。

enter image description here

但问题在于:

  • 如何收到已转换的用户ID ?将另一条消息发送回Post服务并继续下一步?

  • 如果我想从Video服务执行此操作该怎么办?我需要在User服务中为它创建另一个功能吗?

如果我的服务越来越多,这将是很多功能吗?

我认为这不是消息传递架构的工作方式,但我不知道如何在没有消息传递的情况下与其他服务进行通信。

(或者我应该chain them together in the API Gateway所以我不需要消息传递架构?)

enter image description here

1 个答案:

答案 0 :(得分:1)

根据我的理解,您有3项服务:用户,发布,视频。 在Post和Video服务中,您需要实现将用户名作为参数的命令,而不是userId。并且因为这些服务中的所有数据都与userId相关,所以您考虑先调用用户服务来询问相关的userId。

答案是:您应该在每个需要此服务的服务中保存username-userId关联。

在您的特定情况下,Post和Video服务都应该从User Service订阅NewUserRegistered事件并维护自己的username-userid映射。这允许您避免从其他服务额外调用用户服务。