我使用 akka-streams ' ActorPublisher
actor作为发送到传入WebSocket或HTTP连接的每个连接Source
的数据流传输。
ActorPublisher
contract是通过提供需求定期请求数据 - 下游可以接受的元素数量。如果需求为0,我不应该发送更多元素。我观察到,如果我缓冲元素,当消费者缓慢时,缓冲区大小在1到60之间波动,但大多在40-50附近。
要流式传输我使用 akka-http 将WebSocket输出和HttpResponse
数据设置为Source
Message
的能力(或ByteString
S)。
我想知道在这种情况下背压是如何工作的 - 当我通过网络将数据流传输到客户端时。这些数字究竟是如何计算的?它会检查网络级别发生了什么吗?
答案 0 :(得分:2)
我能为你的问题找到最接近的问题"在这种情况下背压如何工作"来自the documentation:
Akka HTTP一直在流式传输,这意味着 Akka Streams启用的背压机制可以通过 所有层 - 从TCP层到HTTP服务器,一直到最后 面向用户的HttpRequest和HttpResponse以及他们的HttpEntity 的API。
关于"如何计算这些数字",我认为这是specified in the configuration settings。