Events PlayFramework 1.2.x的事件总线实现

Events PlayFramework 1.2.x的事件总线实现,events,event-handling,playframework,persistence,publish-subscribe,Events,Event Handling,Playframework,Persistence,Publish Subscribe,随着Play1.2.x项目的发展,我发现自己在这里添加了一些东西 在做某些事情(持久化对象等)时,我的代码会变得非常混乱。 我认为处理此类用例的最佳方法是使用Eventbus。。但是哪一个呢? 有 谷歌番石榴的那个 也许还有更多 我已经看到Play 2.x能够使用akka 2.0事件总线。。。但是由于scala插件仍然使用旧的sbt/scala版本,我无法在Play1.2.x中使用Akka 2 我很乐意阅读您在游戏项目中使用的消息总线。 还请解释您的解决方案如何处理持久性操作,例如如何从侦

随着Play1.2.x项目的发展,我发现自己在这里添加了一些东西 在做某些事情(持久化对象等)时,我的代码会变得非常混乱。 我认为处理此类用例的最佳方法是使用Eventbus。。但是哪一个呢? 有

  • 谷歌番石榴的那个
也许还有更多

我已经看到Play 2.x能够使用akka 2.0事件总线。。。但是由于scala插件仍然使用旧的sbt/scala版本,我无法在Play1.2.x中使用Akka 2

我很乐意阅读您在游戏项目中使用的消息总线。 还请解释您的解决方案如何处理持久性操作,例如如何从侦听器使用JPA会话

谢谢,
Dominik

Akka事件总线只包含在一个文件中,您可以随时按源添加它(当然保留标题):

您还在考虑将Akka与Play 1.2集成吗?我刚刚完成了与Play 1.2.5的集成。我查看了AKKA的模块,但它已经过时了,所以我决定自己集成AKKA

一切都很简单,以下是一些基本步骤:

  • 在dependencies.yml文件中,包括以下行

    com.typesafe.akka->akka-actor_2.10 2.1.0//这是撰写本文时的最新版本

  • 从命令行播放deps执行,将相关库下载到lib文件夹中

  • 执行一些IDE操作以获取库依赖项 在conf目录中设置一个reference.conf文件(这将包含启动时akka的配置信息)-查看:
  • “-Dconfig.file=reference.conf”
    添加到您的VM选项中
  • 在AkkaSystem中有一个AppContext或类似于load的静态类-这只是为了让您创建一次,并且可以从任何地方引用
  • 在AKKA系统中加载:

    Config config = ConfigFactory.load();
    public static final notificationSystem = ActorSystem.create("notification", config);
    
这应该足以开始运行,然后你只需要创建一些演员来执行你的命令

我还让JPA工作-如果您尝试访问模型和查找数据,最终会出现未初始化的实体管理器错误

以下是具有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);
        }
    }

希望这有帮助。我花了好几个小时试着让一切都运转起来。我现在能够组织我的异步任务,而不仅仅是为了工作而工作。

谢谢!我现在不是在玩一个游戏项目,但会考虑下一个!再次感谢!当你考虑下一个项目的时候,看看我已经创建了一个骨架项目。