用于Rest API的Kafka实现

时间:2018-01-30 05:57:49

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

我有一个使用弹簧靴构建的微服务。负载均衡器具有固定的超时时间,此服务会执行一些大型计算,因此当我从UI调用时,响应会超时。

我认为Spring Kafka非常适合这种情况,可以帮助我将响应排入kafka生产者,然后从消费者服务中读取它们。但是我们创建的kafka主题对于整个服务是不变的,那么如何从该队列中检索对应于从UI发出的特定请求的结果。(因为将有多个对同一服务的请求)。此外,如果有一个很好的例子,这个实现将是非常有帮助的

2 个答案:

答案 0 :(得分:1)

你在寻找什么基本上是两件事

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

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

  3. 因此,您应该为要在Kafka队列中推送的每个请求分配一个trackingId,并且当通过管道的消息流更新对应于该trackingId的状态时。为了了解确切的状态,您应该公开一个API(可以与您的UI链接),它将提供您工作的确切状态。

答案 1 :(得分:1)

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

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