通过异步通信从微服务获取用户启动的操作的响应

时间:2018-04-27 22:09:25

标签: asynchronous architecture microservices

我不确定如何将其写成文字,所以这是一个(相当常见的)例子。

假设用户正在使用我们的博客服务并点击"保存"按钮发布他的精彩博客文章。 现在是一个常见的用户故事,他将被告知他的行动的结果 - 像#34;成功发布的通知!"或"发生错误。请再试一次。"。

在同步世界中,这并不难 - 您向服务器发送请求,等待响应,并根据响应显示通知。

但是,让我们想象一下,我们的服务器采用面向微服务的架构,利用异步通信;例如,我们使用消息队列。 API网关微服务从前端接收请求,将其消息发布到队列中。然后一个消费者"微服务将消费消息的结果发送给前端。 在这种情况下,回馈用户操作结果的好方法是什么? 例如,如果我们设置一个websocket会话以获取此类响应,则启动用户操作的代码和为用户操作提供反馈的代码最终会完全分离,尽管它发生在同一个用户工作流中。这是一个明智的想法吗?或者我在这里错过了一些基本想法?

1 个答案:

答案 0 :(得分:1)

您描述的过程是一个很好的过程,带来一些您可能尚未意识到的“隐藏”好处。我认为这里的要点是与用户沟通的内容。

我认为在这种情况下你应立即回复说,博客文章已发送给发布。你没有说,它已经发布,但是发布它的过程是成功启动的。通过这个你对用户说:你的好博客文章是安全的(消息技术将保证这一点),我们正在照顾公开。放松并等待它在一两分钟或一分钟内发布。 这种方法的隐藏好处是,您可以在公开发布之前应用额外的处理,例如:由主持人检查?

其他一切就像你描述的那样。它实际上就是您与用户沟通的方式。明确沟通你的系统在这里做的事情是关键。