如何从Spring Webflux将专有流转换为Flux

韩国工业联合会

我有一个自定义事件总线,可以在其中订阅lambda,例如

 bus.subscribe(topic, event -> {/*gets executed for every new event*/}, exception -> {})

现在,lambda显然在其他线程中运行。现在我的问题是如何将这种接口连接到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<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, ...);
     });
 });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章