1

文档Http().bindAndHandle()

没有对连接源应用背压,即所有连接都以最大速率被接受,这取决于应用程序,可能会带来 DoS 风险!

这同样适用于bindAndHandleAsync() bindAndHandleSync()

该文档还指出,即使是更高级别的系统,例如文件 IO 或 TCP,我认为位于 TCP 之上的 HTTP 也将通过反应流机制工作。

Http().bind()魔法功能吗?这会施加背压吗?

如何使用 akka-streams 公开背压 HTTP 端点?

4

1 回答 1

3

在java中这看起来像这样

Flow<ByteString, ByteString, BoxedUnit> dataFlow = ...;
Http
            .get(actorSystem)
            .bind(host, port, materializer)
            .to(foreach(con -> {
                logger.info("Accepted connection from {}.", con.remoteAddress());
                con.handleWith(dataFlow, materializer)
            }))
            .run(materializer);

dataFlow 是转换传入消息并将它们映射到响应事件的任何流。这样,您将受益于所有反应式流的好处。

您也可以尝试使用 http 路由和简单的 Tcp。

于 2015-08-10T20:44:57.563 回答