На это было указано в нескольких комментариях (включая мой), но я чувствовал, что заслуживает ответа.
Короче говоря, вам нужно различать вызов метода tell
параллельно с функциональностью, котораяактеры выполняются в своих методах приема, выполняемых параллельноФункциональность будет выполняться параллельно автоматически, и параллельный вызов метода tell
не имеет никакого смысла.
Код, который вы показываете , будет выполнять захват в файле и принимать егов БД параллельно.Это автоматически и не требует никаких действий с вашей стороны;так действуют актеры и tell
.И, несмотря на то, что вы говорите, если что-то пойдет не так с загрузкой файла, это не повлияет на загрузку в БД.(Предполагая, что вы правильно создали акторов и сообщения, поскольку вы не перечислили их реализацию.)
Метод tell
является асинхронным: он почти сразу же возвращается и не выполняет фактическую логику (в этом случаеcase): единственное, что он делает - это помещает сообщение в почтовый ящик получателя.Теоретически ответ Исмаила показывает вам, как вы могли бы «вызывать tell
» параллельно, но в этом примере вы «последовательно» создаете массив, который используется для параллельных сообщений, и весь процесс будет очень неэффективно.) Его код, хотя технически и выполняет то, что вы просите, на практике бессмысленен: он ничего не дает, кроме значительного замедления кода.
Короче говоря, я думаю, вы тоже:
- Что-то в корне не так с вашими актерами и тем, как вы их называете.
- На самом деле вы выполняете функции параллельно, и вы просто не понимаете этого, потому что измеряете / наблюдаете что-то неправильно.