【问题标题】:Kafka Implementation for Rest APIRest API 的 Kafka 实现
【发布时间】:2018-07-08 22:43:26
【问题描述】:

我有一个使用 Spring Boot 构建的微服务。负载均衡器有一个固定的超时时间,该服务会进行一些大型计算,因此当我从 UI 调用它时响应会超时。

我认为 Spring Kafka 非常适合这种场景,它可以帮助我将响应排队到 kafka 生产者中,然后从消费者服务中读取它们。但是我们创建的 kafka 主题对于整个服务来说是不变的,那么我怎样才能从这个队列中取回与 UI 发出的特定请求相对应的结果。(因为同一服务会有多个请求)。另外,如果这个实现有一些很好的例子会非常有帮助

【问题讨论】:

  • 我不知道你为什么需要kafka来处理你的超时问题,我建议创建异步rest apis
  • 问题是负载均衡器在提供实际响应之前超时。如果没有超时,并且客户端在等待服务器响应时需要处理其他逻辑,异步 rest api 会有所帮助。

标签: spring-boot apache-kafka kafka-consumer-api kafka-producer-api spring-kafka


【解决方案1】:

有一个open pull request 可以为 Spring for Apache Kafka 添加请求/回复语义。

sendAndReceive 方法返回一个ListenableFuture,在收到回复时完成。

【讨论】:

    【解决方案2】:

    你要找的基本上是两件事

    1. 创建一个管道来处理您的所有异步请求。

    2. 跟踪系统来跟踪您的工作状态。

    因此,您应该为在 Kafka 队列中推送的每个请求分配一个 trackingId,并且随着通过管道的消息流更新与该 trackingId 对应的状态。为了知道确切的状态,您应该公开一个 API(您可以将其与您的 UI 链接),它将给出您工作的确切状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-07
      • 2013-10-17
      • 1970-01-01
      • 2017-06-05
      • 2015-10-26
      • 2013-12-25
      • 2014-06-10
      • 1970-01-01
      相关资源
      最近更新 更多