Java 在没有具体值的情况下为信号事件提供流量?

Java 在没有具体值的情况下为信号事件提供流量?,java,project-reactor,reactive-streams,Java,Project Reactor,Reactive Streams,如何使用随时间发出事件但没有任何具体值的项目设置流/发布者。我考虑了Flux,但是提到Flux是一个空流 例如,我使用文件系统更改的流Flux。我不需要路径值,但希望添加另一个事件。为此,我必须创建虚拟Path对象 Flux events=getFilesystemChanges(); events.startWith(路径为(“虚拟”)) .map(e->42/*后续运算符忽略发出的值*/) ... 是否有可能避免伪值,或者是否存在表示值不被读取的约定?反应流仅与对象一起工作(您永远不能流n

如何使用随时间发出事件但没有任何具体值的项目设置流/发布者。我考虑了
Flux
,但是提到
Flux
是一个空流

例如,我使用文件系统更改的流
Flux
。我不需要
路径
值,但希望添加另一个事件。为此,我必须创建虚拟
Path
对象

Flux events=getFilesystemChanges();
events.startWith(路径为(“虚拟”))
.map(e->42/*后续运算符忽略发出的值*/)
...

是否有可能避免伪值,或者是否存在表示值不被读取的约定?

反应流仅与对象一起工作(您永远不能流
null
),并且由于
Void
永远不能实例化,因此您永远不能发送任何值-只是一个完成信号

我不太确定这里的用例,但您可以考虑两种不同的方法:

  • 如果不需要该值,则可以映射到
    对象
    ,即

    Flux<Object> events = getFilesystemChanges().map(p -> new Object());
    
    然后,您可以执行
    events.startWith(可选的.empty())
    来预先设置流的“虚拟”路径

FWIW,我经常用于“heartbeat”类型函数的第二种方法,在这种方法中,我希望发出一个值流,但也希望确保每(时间段)有一次活动来保持底层连接的活动。后者是我经常使用空选项的地方

Flux<Optional<Path>> events = getFilesystemChanges().map(Optional::of);