1

我正在尝试将一些 akka 演员配置为在 play2 应用程序的上下文中拥有一个持久邮箱。

在实例化时application.conf正在读取配置。MongoBasedMailboxType

事件调度程序 { 邮箱类型 = akka.actor.mailbox.MongoBasedMailboxType }

但是我遇到了这个异常。

java.lang.NoSuchMethodError: scala.Predef$.augmentString(Ljava/lang/String;)Lscala/collection/immutable/StringOps;
    at akka.util.Duration$.<init>(Duration.scala:76)
    at akka.util.Duration$.<clinit>(Duration.scala)
    at akka.actor.mailbox.MongoBasedMailboxSettings.<init>(MongoBasedMailboxSettings.scala:21)
    at akka.actor.mailbox.MongoBasedMailboxType.<init>(MongoBasedMailbox.scala:26)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

我相信原因是下面的配置没有被识别。

akka {
  actor {
    mailbox {
      mongodb {

        uri = "mongodb://localhost/akka.mailbox"
        timeout {
          # time to wait for a read to succeed before timing out the future
          read = 3000 ms
          # time to wait for a write to succeed before timing out the future
          write = 3000 ms
        }
      }
    }
  }
}

我也试过akka {... }play {}没有运气的情况下把它包起来。

  • scalaVersion := "2.10.1"
  • “com.typesafe.akka”%“akka-mongo-mailbox”%“2.0.5”
  • addSbtPlugin("play" % "sbt-plugin" % "2.1.5")
4

2 回答 2

1

Akka-mongo-mailbox 2.0.5 依赖于 akka-mailboxes-common 2.0.5,它依赖于 akka 2.0.5,但是使用 play 2.1.5 你有 akka 2.1,所以你得到一个 api 不匹配。不知道该怎么办,也许可以在akka邮件列表上询问?

于 2013-10-04T12:44:10.947 回答
0

这个问题在邮件列表中得到了回答:

""" 不知道有任何开源项目为 mongo 或 redis 的 akka 2.1 实现持久邮箱。

如果您想实现自己的,2.0.5 版本的源代码可在此处获得 https://github.com/akka/akka/tree/v2.0.5/akka-durable-mailboxes """

https://groups.google.com/forum/#!topic/akka-user/50c2HZa1OFU

于 2013-10-01T17:26:44.413 回答