Kafka 休息实施 API
Kafka Implementation for Rest API
我有一个使用 spring 引导构建的微服务。负载均衡器有一个固定的超时时间,并且此服务会进行一些大型计算,因此当我从 UI.
调用它时,响应会超时
我认为 Spring Kafka 非常适合这种情况,它可以帮助我将响应排队到 kafka 生产者中,然后从消费者服务中读取它们。但是我们创建的 kafka 主题对于整个服务来说是不变的,那么我如何从这个队列中检索与 UI 发出的特定请求相对应的结果。(因为同一服务会有多个请求).另外,如果这个实现有一些很好的例子将会非常有帮助
你要找的基本上是两个东西
正在创建一个管道来处理您所有的异步请求。
跟踪系统跟踪您的工作状态。
因此,您应该为您在 Kafka 队列中推送的每个请求分配一个 trackingId,并且随着消息流过管道更新与该 trackingId 对应的状态。为了知道确切的状态,你应该公开一个 API(你可以 link 和你的 UI)这将给出你工作的确切状态。
有一个 open pull request 可以为 Apache Kafka 添加 request/reply 语义到 Spring。
sendAndReceive
方法returns一个ListenableFuture
收到回复时完成。
我有一个使用 spring 引导构建的微服务。负载均衡器有一个固定的超时时间,并且此服务会进行一些大型计算,因此当我从 UI.
调用它时,响应会超时我认为 Spring Kafka 非常适合这种情况,它可以帮助我将响应排队到 kafka 生产者中,然后从消费者服务中读取它们。但是我们创建的 kafka 主题对于整个服务来说是不变的,那么我如何从这个队列中检索与 UI 发出的特定请求相对应的结果。(因为同一服务会有多个请求).另外,如果这个实现有一些很好的例子将会非常有帮助
你要找的基本上是两个东西
正在创建一个管道来处理您所有的异步请求。
跟踪系统跟踪您的工作状态。
因此,您应该为您在 Kafka 队列中推送的每个请求分配一个 trackingId,并且随着消息流过管道更新与该 trackingId 对应的状态。为了知道确切的状态,你应该公开一个 API(你可以 link 和你的 UI)这将给出你工作的确切状态。
有一个 open pull request 可以为 Apache Kafka 添加 request/reply 语义到 Spring。
sendAndReceive
方法returns一个ListenableFuture
收到回复时完成。