AkkaHttp背压何时生效?

问题描述 投票:0回答:1

..当没有使用http响应实体,或者客户端tcp缓冲区已满,或者当客户端从其tcp缓冲区中获取的速率低于服务器将数据推送到其中的速率时?

我正在寻找一种实现以下目标的方法:

让我们假设服务器上有一个可以反压的数据源,例如Apache Kafka主题。

如果我从远程位置使用此源,则该远程位置可以使用的速率可能较低-如果使用Kafka客户端或使用方,则可以解决。

但是,我们假定客户端是浏览器,并且不可能公开直接的Kafka协议/连接。

此外,假设即使跳过某些消息,也有可能获得所有值。

例如,在主题紧凑的情况下,对于客户端来说,仅获取每个键的最新值就足够了,而无需遍历中间值。

这等效于Flowable.onBackpressureLatest()或AkkaStreams.aggregateOnBackpressure或onBackpressureAggregate。

这是通过HTTP REST(例如,服务器端事件/分块的传输编码)或通过Web套接字公开主题的一种方法,可以实现跳过每个键的中间值的效果?

请告知,谢谢

http tcp akka akka-http backpressure
1个回答
0
投票

Akka http很好地支持基于TCP协议的背压,您可以阅读有关将其与流here结合使用的信息>

结合akka-http,akka-stream和alpakka-kafka可以很容易地实现通过带有反压力的http进行卡夫卡消耗和暴露。

Kafka消费者需要进行轮询,而alpakka通过减少轮询请求来弥补背压。

当完全支持背压时,我看不到跳过消息的必要性。 Kafka将跟踪消费者组(您为服务或http连接选择的一个)消耗的偏移量,这将确保最终消耗所有消息。当然,如果您以更快的方式在某个主题中生成消息,则消费者将永远无法追上。让我知道这是否是您的情况。

作为最后的提示,您可以签出Confluent REST Proxy API,这使您可以轻松地阅读Kafka消息。

© www.soinside.com 2019 - 2024. All rights reserved.