gpt4 book ai didi

apache-kafka - 如何处理对 Message Broker 生产者/消费者的 HTTP 请求?

转载 作者:行者123 更新时间:2023-12-05 02:59:39 24 4
gpt4 key购买 nike

假设您有一个 POST 请求,其中一些 product 作为负载。传统上,您的 HttpRequest 生命周期应该以 HttpResponse 结束,该 HttpResponse 携带请求的操作结果,在我们的例子中,响应说 “Product created” 可能就足够了.

但是有了消息代理,事情可能会变成这样:

  1. 请求处理程序创建适当的消息 CreateProduct(...),并将其生成到消息代理中的主题。
  2. 然后呢???
  3. 消费者通过在持久数据库中实际创建产品来检索和处理消息。
  4. 然后呢???

第 2 步应该发生什么?

如果我们发送回复说 “您的产品应该很快创建,请继续等待,我们会及时通知您”:

  • 如何在已经发送响应后通知客户?
  • 我们是否被迫使用 WebSocket 以保持链接打开?

第 4 步应该发生什么?

我有我的看法,但我想知道您在生产中如何处理它。

实际创建产品的应用程序可以向消息代理中的状态主题生成一条消息说“产品已创建”,因此原始消息的生产者可以使用它,然后以某种方式通知客户端.我认为唯一可行的方法是通过 WebSocket 连接。

所以我想知道 WebSocket 是否是执行涉及消息代理的 Http 请求/响应的唯一方法?将消息代理用于 Http 请求/响应是否合理?

最佳答案

您可以以完全异步的方式来考虑这一点(那时不需要 websocket)。

您执行一个 POST Http 请求,这将创建一个与您的工作关联的唯一 ID。此 ID 也将存储在数据库中,状态类似于“正在处理”。此外,ID 将返回给您的客户。

您的作业 ID(及其有效负载参数)在 Kafka 内部传播并最终到达消费者。该消费者将处理工作并将内容提交给外部数据库(或其他)。工作完成后,您将工作状态更新为“完成”或类似的内容。

与此同时,在客户端,您轮询一个端点,该端点将询问您的作业数据库状态作业是否结束。

这是满足您需求的一种非常常见的方式。

亚尼克

关于apache-kafka - 如何处理对 Message Broker 生产者/消费者的 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57695928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com