Но если использовать актеров, что в этом плохого?
Если нам нужно читать/писать в какой-то файл свойств. Вот мой пример Java. Но все же с Akka Actors.
Допустим, у нас есть актор ActorFile
, представляющий один файл. Хм.. Возможно это не может представлять собой один файл. Правильно? (было бы неплохо, если бы это было возможно). Итак, тогда он представляет несколько файлов, таких как PropertyFilesActor
, тогда:
Почему бы не использовать что-то вроде этого:
public class PropertyFilesActor extends UntypedActor {
Map<String, String> filesContent = new LinkedHashMap<String, String>();
{ // here we should use real files of cource
filesContent.put("file1.xml", "");
filesContent.put("file2.xml", "");
}
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof WriteMessage) {
WriteMessage writeMessage = (WriteMessage) message;
String content = filesContent.get(writeMessage.fileName);
String newContent = content + writeMessage.stringToWrite;
filesContent.put(writeMessage.fileName, newContent);
}
else if (message instanceof ReadMessage) {
ReadMessage readMessage = (ReadMessage) message;
String currentContent = filesContent.get(readMessage.fileName);
// Send the current content back to the sender
getSender().tell(new ReadMessage(readMessage.fileName, currentContent), getSelf());
}
else unhandled(message);
}
}
...сообщение будет отправлено с параметром (fileName)
У него есть собственный in-box
, принимающий такие сообщения, как:
- WriteLine(имя файла, строка)
- ReadLine(имя файла, строка)
Эти сообщения будут сохраняться в in-box
в порядке, одно за другим. Актер будет выполнять свою работу, получая сообщения из ящика - сохраняя/читая, и тем временем отправляя обратную связь sender ! message
обратно.
Таким образом, скажем, если мы пишем в файл свойств и отправляем, показывая содержимое на веб-странице. Мы можем начать показывать страницу (сразу после того, как мы отправили сообщение для сохранения данных в файл) и, как только мы получили обратную связь, обновить часть страницы данными из только что обновленного файла (с помощью ajax).
person
ses
schedule
15.05.2013
Future
я полагаю. Еще раз спасибо. - person Michael   schedule 20.07.2012