Какие эквиваленты Mutiny для Publisher и Flowable в RxJava2
Я хочу создать буферизованный 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. Какие эквиваленты Mutiny для Publisher и Flowable?
1 ответ
Кажется, что BoadcastProcessor эквивалентен PublishProcessor. Существует также UnicastProcessor, который имеет буферизацию, но отправляет запросы только одному подписчику.
Это зависит от того, чем вы хотите заниматься.
По умолчанию Multi ничего не испускает, пока не будет подписка, которая в вашем случае, я полагаю, будет конечной точкой REST (1 подписка на полученный запрос).
UnicastProcessor сохраняет все отправленные элементы неограниченным образом. Помните, что это может привести к
OutOfMemoryException
при неосторожном использовании, если есть предметы, но никто не ест.
BroadcastProcessor не хранит элементы, а отправляет их нескольким подписчикам.