Нет ничего плохого в возвращении будущего, которое будет завершено позже, актером.
Обратите внимание на этот вопрос, однако: вы завершите будущее каким-то изменчивым внутренним актором или нет?
Если ответ отрицательный, это нормально, и вам не о чем беспокоиться.
Если да, то вам придется позаботиться о синхронизации, так как актер/внешний код может мутировать это состояние в разных потоках (что, как бы то ни было, поражает цель использования актеров).
В противном случае это законно.
Кстати, это не то, что характерно только для фьючерсов. Вы должны следовать этому за любое сообщение, которое вы отправляете от актера.
UPDATE: расширение моего ответа обратиться комментарий OP еще.
Вопрос был в основном о возвращении объекта, который не является актером, от актера, а не только от сценария ... не уверен, относится ли этот ответ именно к этому ... объект может быть намного тяжелее, чем просто «регулярное» сообщение ... если Акка не передает сообщение таким образом, чтобы оно соответствовало ссылке/интернированию.
Там нет особых требований о «тяжести» сообщения в Акко и в целом это может быть любой объект (вы можете вывести это из-за того, что Any
используется для типа сообщения, а не какой-то Акку -пределенный класс/признак сообщения с набором определенных ограничений).
Конечно, вам приходится относиться к ситуациям, когда сообщения должны сохраняться или отправляться на удаленный хост, но это особый случай. В этом случае вы должны убедиться, что сериализация обрабатывается должным образом.
В любом случае, если сообщение (объект) не оставляет границ одного и того же jvm - нормально, чтобы объект сохранял какое-либо состояние.
Почему это не может случиться? Это похоже на обычное сообщение akka. – Jatin
Допустимо ли вернуть весь объект? – matanster
Предполагая, что оба участника являются локальными, вы можете пройти все, что захотите. Если задействован удаленный доступ, объект должен быть сериализуемым. Кроме того, будьте предельно осторожны, если объект не является неизменным. – Ryan