Обычно это не предпочтительный способ иметь общее/глобальное состояние в системе акторов. Очень важная идея при работе с акторами состоит в том, чтобы не делиться каким-либо изменяемым состоянием, вместо этого изменяемое состояние инкапсулируется внутри акторов, как указано в документация
Не передавайте изменяемые объекты между акторами. Чтобы гарантировать это, предпочитайте неизменяемые сообщения. Если инкапсуляция акторов нарушается путем раскрытия их изменяемого состояния наружу, вы возвращаетесь в обычную страну параллелизма Java со всеми недостатками.
Актеры созданы для того, чтобы быть контейнерами для поведения и состояния, что означает отказ от регулярной отправки поведения в сообщениях (что может быть заманчиво при использовании замыканий Scala). Одним из рисков является случайное совместное использование изменяемого состояния между акторами, и это нарушение модели акторов, к сожалению, нарушает все свойства, которые делают программирование в акторах таким приятным занятием.
Более того, если одному актору нужно что-то узнать о состоянии другого актора, он запросит это, используя неизменяемые сообщения, и получит неизменяемый ответ. Одной из ключевых особенностей акторов Akka является их способность управлять состоянием потокобезопасным способом и имея общее и изменяемое состояние, мы нарушим это свойство
Обычно операции чтения БД (CRUD) могут выполняться напрямую любым актором. Для этого. сделать ответственным за это актера, и использовать его от других акторов.
Дайте мне знать, если это поможет!!
person
Anand Sai
schedule
02.03.2020