gpt4 book ai didi

java - Akka Java 文件 IO 限制

转载 作者:行者123 更新时间:2023-12-02 02:48:45 25 4
gpt4 key购买 nike

我想将文件内容逐行流式传输到 Actor。我有类似的东西:

final ActorSystem system = ActorSystem.create("stream_system");
final Materializer materializer = ActorMaterializer.create(system);
final ActorRef actor = system.actorOf(Props.create(streamActor.class), "sink");

final Path file = Paths.get("path/file.txt");

Sink<ByteString, CompletionStage<Done>> printlnSink =
Sink.<ByteString> foreach(chunk -> actor.tell(chunk.utf8String(), null));
//Sink.<ByteString> actorRef(actor, null);

CompletionStage<IOResult> ioResult =
FileIO.fromPath(file)
.throttle(1, Duration.create(1, TimeUnit.SECONDS), 1, ThrottleMode.shaping())
.to(printlnSink)
.run(materializer);

未注释的版本可以工作,但它会一次性传输整个文件内容。评论版本以“未知”消息结束。

我想以几秒钟的延迟逐行发送给 Actor。有什么帮助如何实现这一点吗?接收参与者只需获取字符串消息并将其打印在输出上。

最佳答案

Framing类(class)可以帮助你:

CompletionStage<IOResult> ioResult =
FileIO.fromPath(file)
.via(Framing.delimiter(ByteString.fromString(System.lineSeparator()), 1000, FramingTruncation.ALLOW))
.throttle(1, Duration.create(1, TimeUnit.SECONDS), 1, ThrottleMode.shaping())
.to(printlnSink)
.run(materializer);

关于java - Akka Java 文件 IO 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44166510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com