Текучий с текучим? - PullRequest
0 голосов
/ 15 мая 2019

Я новичок в RxJava2, и я надеюсь, что кто-то может дать мне проверку работоспособности того, как я планирую реализовать текучий ...

В принципе, мы могли бы иметь массив от 1 до 1000 Runсущности .json, и каждая сущность Run.json имеет два компонента: projectInfo и runInfo.Сущность runInfo имеет массив образцов данных, собираемых во время выполнения.Длина массива будет довольно большой ... от 50000 до 500000 объектов.

[  
   {
      "projectInfo":{ 
         "name":"Abc Def"
      },
      "runInfo":{  
         "runId":"abc123",
         "samples":[  
            {
               "sensor1":12345.678
            }
         ]
      }
   }
]

Существует несколько служб, которые будут работать с этими объектами Run.json:

  • Статистическиеанализ образцов;
  • Рисование данных образца на аэрофотоснимке;
  • Создание отчета;

Для каждого из этих действий требуются все данные в прогонеСущность .json, такая как runId и имя проекта.

МОЙ ПЛАН: Я создал синтаксический анализатор на основе Jackson для синхронного преобразования файла run.json в сущность Kotlin и реализовал Flowable.generate, чтобы обеспечитьс поддержкой обратного давления, асинхронный поток запуска сущностей json для подписчиков.

ПРОВЕРКА SANITY: Мой план, вероятно, избыточен для файлов Flowable of run.json, которые будут состоять из 1–200 файлов.Реальная проблема заключается в том, как передавать образцы.

Итак ...

Должен ли я передавать каждый объект Kotlin Run на каждую из служб (т. Е. Разбивать один поток на три потока), иуслуги будут плавно передавать образцы?Это, кажется, имеет смысл для меня, но я был бы признателен за отзывы от более опытных людей.

Спасибо за ваш интерес и время,

Майк

1 Ответ

0 голосов
/ 16 мая 2019

Потоковая передача трех разных объектов будет лучше, также зависит от вариантов использования. Другое дело - использовать Scheduler io () и computation (), io () для чтения файлов и computation () для обработки элементов, так как размер ввода велик.

...