我有一个定制的事件总线,在那里我可以订阅
bus.subscribe(topic, event -> {/*gets executed for every new event*/}, exception -> {})
现在,lambda显然运行在不同的线程中。现在我的问题是如何将这种接口连接到 Flux<Event> 是吗?我必须自己写吗 Publisher 是吗?但是人们说这样做不是个好主意。
Flux<Event>
Publisher
模拟实现将是
import java.util.function.Consumer class Mock extends Thread { Consumer<String> lambda public Mock(Consumer<String> lambda) { this.lambda = lambda } @Override void run() { while(true) { Thread.sleep(1000) lambda.accept("lala") } } } Flux<String> flux = new Mock({ /*TODO write to flux*/ }).start()
你说得对,你不应该实现你自己的出版商。在大多数情况下,您也不必处理线程,而是依赖于 Flux 是的。
Flux
类似于:
Flux<Event> events = Flux.<Event>create(emitter -> { bus.subscribe(topic, event -> emitter.next(event), exc -> emitter.error(exc)); // you should also unsubscribe emitter.onDispose(() -> { bus.unsubscribe(topic, ...); }); });