4

假设我们依赖Reactor 3(即在 Spring 5 应用程序中)和一个文本文件my/file.txt.

我需要订阅文本文件行(现有的和将来会出现的)并创建一个Flux<String>. 如果您愿意,忽略阻塞 IO 读取关注点,让我们来揭示构建此类订阅的原理。

为简单起见,假设我们将这些行打印到 std 输出:

flowLinesFrom(Path.of("my/file.txt"))
   .subscribe(System.out::println);     

什么是正确的实施方式Flux<String> flowLinesFrom(Path)

4

1 回答 1

1

你可以这样使用

//Create FluxTailer
FluxTailer tailer = new FluxTailer(
    //The file to tail
    Path.of("my/file.txt").toFile(),
    //Polling interval for changes
    Duration.ofSeconds(1)
);

//Start tailing
tailer.start();

//Subscribe to the tailer flux
tailer.flux().subscribe(System.out::println);

//Just for demo you wait for 10 seconds
try{
    Thread.sleep(10000);
}catch (Exception e){}

//Stop the tailer when done, will also complete the flux
tailer.stop();

您可以随意开始停止,也可以使用从文件开头或结尾读取

tailer.readFromStart();
tailer.readFromEnd();
于 2020-05-28T12:14:48.313 回答