使用 Reactor 取代 Google EventBus

你还在用 Google EventBus?

什么是 Reactor

Reactor 是基于 Reactive Streams 规范的第四代响应式库, 用于在 JVM 上构建非阻塞应用程序

Project Reactor

只用来发布事件的话比较简单。废话不多说,直接看代码。

事件类

创建一个事件类用于保存数据。

1
record KeyEvent(int key) {}

发布、订阅

创建 Sinks.ManyFlux

1
2
public static final Sinks.Many<KeyEvent> PUBLISHER = Sinks.many().multicast().onBackpressureBuffer();
public static final Flux<KeyEvent> SUBSCRIBER = PUBLISHER.asFlux();

发布事件:

1
2
3
void publish() {
    PUBLISHER.tryEmitNext(new KeyEvent(1));
}

订阅事件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void subscribe() {
    // lambda 方式
    SUBSCRIBER.subscribe(e -> System.out.println(e.key()));
    // 方法引用
    SUBSCRIBER.subscribe(this::onKey);
}

void onKey(KeyEvent e) {
    System.out.println(e.key());
}
Licensed under CC BY-NC-SA 4.0
最后更新于 2024-06-09 23:48 +0800
使用 Hugo 构建
主题 StackJimmy 设计