Я тестирую воду с реактивными потоками Java9 и RxJava2. У меня действительно нет предпочтений, но я ищу некоторые рекомендации, возможно ли это.
Я создаю предварительно настроенное количество подписчиков, например:
for(int i = 0; i<MAX_SUBSCRIBERS; i++) { System.out.println("Creating subscriber: " + i); publisher.subscribe(new MySubscriber<>(i + "-subscriber")); }
Я читаю список файлов из каталога для одновременной загрузки в какую-то стороннюю систему.
Stream<Path> paths = Files.list(Paths.get("/my/dir/with/files")); paths .filter((Files::isRegularFile)) .forEach(pathName -> publisher.submit(pathName.toString()));
Я получаю следующий вывод:
0-subscriber: /my/dir/with/files/test0.txt received in onNext
0-subscriber: /my/dir/with/files/test1.txt received in onNext
1-subscriber: /my/dir/with/files/test0.txt received in onNext
1-subscriber: /my/dir/with/files/test1.txt received in onNext
В идеале мы должны увидеть следующее поведение. Каждый подписчик должен выполнять работу над уникальным файлом.
0-subscriber: /my/dir/with/files/test0.txt received in onNext
1-subscriber: /my/dir/with/files/test1.txt received in onNext
Это возможно? Любые советы будут потрясающими!