我有一个使用弹簧靴构建的微服务。负载均衡器具有固定的超时时间,此服务会执行一些大型计算,因此当我从UI调用时,响应会超时。
我认为Spring Kafka非常适合这种情况,可以帮助我将响应排入kafka生产者,然后从消费者服务中读取它们。但是我们创建的kafka主题对于整个服务是不变的,那么如何从该队列中检索对应于从UI发出的特定请求的结果。(因为将有多个对同一服务的请求)。此外,如果有一个很好的例子,这个实现将是非常有帮助的
答案 0 :(得分:1)
你在寻找什么基本上是两件事
创建管道来处理所有异步请求。
跟踪系统以跟踪您的工作状态。
因此,您应该为要在Kafka队列中推送的每个请求分配一个trackingId,并且当通过管道的消息流更新对应于该trackingId的状态时。为了了解确切的状态,您应该公开一个API(可以与您的UI链接),它将提供您工作的确切状态。
答案 1 :(得分:1)
有一个open pull request为Spring for Apache Kafka添加请求/回复语义。
sendAndReceive
方法返回ListenableFuture
,在收到回复时会完成。