Является ли обработка в Sink.fold() сериализованной в Akka Streams?

Я начинаю с потоков Akka; Я пытаюсь создать поток, который читает данные из веб-службы, а затем сохраняет их в S3. Мне было интересно, если я определю Sink, используя метод Sink.fold (для сбора информации о постоянных элементах) для сохранения, будут ли элементы, отправленные в приемник, обрабатываться один за другим или параллельно?

Это основной вопрос, но я не смог найти окончательного ответа в документации.

1 ответ

Решение

Поскольку Sink.fold нужен результат из предыдущих элементов, чтобы объединить его со следующим, он обязательно последовательный.

Это больше Sink.foldLeft, на самом деле.

Другими словами, если у вас есть a, b как элементы, и вы сложите их, используя f, тебе нужно acc = f(zero, a) уметь обрабатывать f(acc, b), Итак, до обработки для aготово b не может быть обработано.

Из Api Doc:

Sink, который будет вызывать данную функцию для каждого полученного элемента, предоставляя ему свой предыдущий вывод (или заданное нулевое значение) и элемент в качестве ввода. Возвращенный java.util.concurrent.CompletionStage будет завершен со значением окончательной оценки функции, когда входной поток завершится, или завершится с Failure, если в потоке будет сигнализирован сбой.

Другие вопросы по тегам