Вы все еще хотите интегрировать AKKA с Play 1.2?Я только что завершил интеграцию с Play 1.2.5.Я посмотрел на модуль для АККА, но он был довольно устаревшим, поэтому я решил интегрировать АККА сам.
Все довольно просто, вот несколько основных шагов:
В вашем файле dependencies.yml включить строку
com.typesafe.akka -> akka-actor_2.10 2.1.0 // this was the latest version at time of writing
выполнить из командной строки play deps , чтобы загрузить соответствующуюбиблиотеки в вашей папке lib
- сделайте немного IDE, чтобы получить зависимости библиотек в настройках вашего каталога conf в файле reference.conf (он будет содержать информацию о конфигурации для akka при запуске) - посмотрите на: http://doc.akka.io/docs/akka/2.1.0/general/configuration.html
- добавьте
"-Dconfig.file=reference.conf"
к своим параметрам виртуальной машины - Имейте статический класс AppContext или аналогичный для загрузки в AkkaSystem - это просто так, что вы создаете один раз и можете ссылаться из любого места.
Загрузите в систему AKKA:
Config config = ConfigFactory.load();
public static final notificationSystem = ActorSystem.create("notification", config);
Этого должно быть достаточно, чтобы начать, тогда вам просто нужно создать несколько актеров, чтобы выполнить вашу ставку.
У меня тоже работает JPA - если выy и доступа к вашим моделям и поисковым данным, вы получите ошибку Uninitialised Entity Manager.
Вот пример кода для актера с доступом JPA:
@Override
public void onReceive(Object o) throws Exception {
if (o instanceof SomeMessageType) { // create your own serializable class to transfer message data
SomeMessageType message = (SomeMessageType) o;
JPAPlugin.startTx(true); // true is to start this as a readonly transaction
// Do all the JPA goodness
JPAPlugin.closeTx(false); // false is for rollback - I use this because I am doing a readonly transaction
} else {
unhandled(o);
}
}
Надеюсь, это поможет,Я провел несколько часов, пытаясь заставить все работать.Теперь я могу структурировать свои асинхронные задачи, а не просто выплевывать из Play Jobs.