如何使用消息传递架构将消息发送回发送者?
How to send the message back to the sender with messaging architecture?
我正在使用消息传递架构解决微服务之间的通信问题。
假设我有一个传统应用程序,并且有 User
、Post
Video
个模块。
你可以用它创建帖子、视频,但在此之前,我需要将用户名转换为用户 ID。
一旦我将模块拆分为微服务,就无法将它们链接在一起,而是直接访问微服务。
如果我想将用户名转换为 ID,
我可以通过消息调用 Post
服务中的 User
服务,目前一切顺利。
但问题是:
如何接收转换后的用户ID?向 Post
服务发送另一条消息并继续下一步?
如果我想从 Video
服务 执行此操作怎么办?我需要在 User
服务中为它创建另一个功能吗?
如果我得到越来越多的服务,那将是很多功能吗?
我认为这不是消息传递架构的工作原理,但我不知道如何在没有消息传递的情况下与其他服务进行通信。
(或者我应该 chain them together in the API Gateway 这样我就不需要消息传递架构了吗?).
据我了解,您有 3 项服务:用户、Post、视频。
在 Post 和视频服务中,您需要实现将用户名作为参数而不是 userId 的命令。而且因为这些服务中的所有数据都是通过userId关联的,所以你考虑先调用用户服务来询问相关的userId。
答案是:您应该在每个需要此的服务中保存用户名-用户 ID 关联。
在您的特定情况下,Post 和视频服务都应从用户服务订阅 NewUserRegistered 事件并维护自己的用户名-用户 ID 映射。这使您可以避免从其他服务额外调用用户服务。
我正在使用消息传递架构解决微服务之间的通信问题。
假设我有一个传统应用程序,并且有 User
、Post
Video
个模块。
你可以用它创建帖子、视频,但在此之前,我需要将用户名转换为用户 ID。
一旦我将模块拆分为微服务,就无法将它们链接在一起,而是直接访问微服务。
如果我想将用户名转换为 ID,
我可以通过消息调用 Post
服务中的 User
服务,目前一切顺利。
但问题是:
如何接收转换后的用户ID?向
Post
服务发送另一条消息并继续下一步?如果我想从
Video
服务 执行此操作怎么办?我需要在User
服务中为它创建另一个功能吗?
如果我得到越来越多的服务,那将是很多功能吗?
我认为这不是消息传递架构的工作原理,但我不知道如何在没有消息传递的情况下与其他服务进行通信。
(或者我应该 chain them together in the API Gateway 这样我就不需要消息传递架构了吗?).
据我了解,您有 3 项服务:用户、Post、视频。 在 Post 和视频服务中,您需要实现将用户名作为参数而不是 userId 的命令。而且因为这些服务中的所有数据都是通过userId关联的,所以你考虑先调用用户服务来询问相关的userId。
答案是:您应该在每个需要此的服务中保存用户名-用户 ID 关联。
在您的特定情况下,Post 和视频服务都应从用户服务订阅 NewUserRegistered 事件并维护自己的用户名-用户 ID 映射。这使您可以避免从其他服务额外调用用户服务。