2017-06-13 40 views
2

我用阿卡流ActorPublisher演员作为流每个连接的数据Source发送到传入的WebSocket或HTTP连接。阿卡流作为网络响应源ActorPublisher - 如何背压工作

ActorPublishercontract是定期通过提供需求请求数据 - 下游可接受的元素数量。如果需求为0,我不应该发送更多元素。我观察到,如果我缓冲元素,当消费者速度缓慢时,缓冲区大小在1到60之间波动,但大多数在40-50之间。

要流我使用阿卡-HTTP“s到的WebSocket输出和HttpResponse数据设置为MessageSource S(或ByteString S)的能力。

不知背压如何在这种情况下 - 当我通过网络流数据到客户端。如何计算这些数字?它检查网络级别发生了什么?

+0

I * *认为是阿卡流I/O层代表到TCP背压,但我没有证据 - 在I/O代码有太多我很难破译:( –

回答

1

我能找到你的问题最接近的“背压在这种情况下如何工作”是从the documentation

阿卡HTTP通过流了一路,这意味着 背压通过阿卡流启用机制是通过 暴露所有层-从TCP层,通过HTTP服务器,向上 一路到用户面临的HttpRequest和HttpResponse对象和他们的HttpEntity 的API。

至于“如何计算这些数字”,我认为是specified in the configuration settings