2017-01-29 4 views
2

Я пытаюсь перенести реактивный проект из rxjava 1 в версию 2. Я использовал AsyncEmitter для присоединения к существующему фиду, указав BackpressureMode. Однако я не нашел сопоставимого способа сделать это в rxjava2. Что заменило AsyncEmitter в rxjava 2? Я вижу, что существует ряд реализаций эмиттеров, но никто не принимает BackPressureStrategy.Что заменило AsyncEmitter в rxjava 2?

Я попытался

FlowableCreate flowableCreate = 
     new FlowableCreate(source, BackpressureStrategy.LATEST); 
flowableCreate.subscribe(System.out::println); 

и отлично компилируется, но исполнение не удается сразу с:

Error: (123, 23) Java: не может получить доступ к org.reactivestreams.Subscriber файл класса для орг .reactivestreams.Subscriber не найден. А?

+1

AFAIK, в RxJava 2 вы имеете текучий, который поддерживает противодавление и Observable, которого нет. Возможно, вы хотите сначала создать Observable, а затем переключиться на Flowable? –

+0

Пробовал это, но странные ошибки компиляции. –

+0

Похож на ошибку IntelliJ. Это отлично работает в командной строке. –

ответ

2

В 2.x метод, который вы ищете, это Flowable.create().

Вы получаете cannot access org.reactivestreams.Subscriber вероятно потому, что вы не используете 2.0.5+ с мавена или забыли загрузить org.reactivestreams: reactivestreams зависимость RxJava 2.

+0

Спасибо, нет, я верю, что у меня он настроен правильно, все, что мне нужно, это зависимость 2.0.5, правильно? Первоначально я имел проект IntelliJ, указывающий на rxjava io.reactivex rxjava 1.2.5, и он отлично работал. Затем я переключился на rxjava2 2.0.5, выполнил чистую установку и проект восстановления, чтобы убедиться, и я проверил библиотеки, и все правильно. Но IntelliJ загружает неправильный класс. Построение из командной строки отлично работало. Поэтому я скопировал все в новый проект, и он отлично работал. Пробейте небольшую ошибку. Они, как правило, очень хорошо разбираются в этих –

+0

. Кстати, можно ли это сделать с помощью Observable, если я готов отказаться от противодавления? Или это бессмысленный случай использования? –

+0

Все базовые типы имеют 'create()'. – akarnokd