0

我想创建一个可以将对象推送到其中的缓冲 Multi。Multi 用作 REST 端点的结果。

到目前为止,我所拥有的是:

    class MyService {
        private PublishProcessor<String> deviceStatusProcessor = PublishProcessor.create();
        private Flowable<String> deviceStatusQueue = Flowable.fromPublisher(deviceStatusProcessor);

        public void pushDeviceStatus(DeviceStatus deviceStatus) {
            deviceStatusProcessor.onNext(deviceStatus);
        }

        public Multi<String> getStream() {
            return Multi.createFrom().publisher(deviceStatusQueue);
        }
    }

然而,这段代码混合了 RxJava 和 Mutiny。Publisher 和 Flowable 的 Mutiny 等价物是什么?

4

2 回答 2

1

这取决于你想做什么。

默认情况下,在有订阅之前,Multi 不会发出任何内容,在您的情况下,我相信这将是 REST 端点(每个收到的请求 1 个订阅)。

UnicastProcessor 以无限制的方式存储所有发射的项目。OutOfMemoryException所以请注意,如果有物品但没有人消费,如果不小心使用可能会导致。

BroadcastProcessor 不存储项目,而是将它们分派给多个订阅者。

于 2020-09-18T07:03:42.370 回答
1

看来BoadcastProcessor等价于PublishProcessor。还有UnicastProcessor,它有缓冲,但只推送给一个订阅者。

于 2020-04-29T14:18:17.920 回答