2015-10-05 29 views
1

使用Java我想用java測試aka卡桑德拉持久性。從URL(http://doc.akka.io/docs/akka/2.4.0-RC3/java/persistence.html)我試圖讓PersistentActorExample與cassandra一起工作,我遇到了以下問題。用Java代碼的aka卡桑德拉持久性

我正在使用下面提到的application.conf。你們有沒有可以用來開始的java實現示例?相同的代碼工作良好leveldb。目前我們正在使用datastax 4.8。我希望這是一個application.conf問題。


akka { 
    actor { 
    provider = "akka.cluster.ClusterActorRefProvider" 
    } 
    remote { 
    log-remote-lifecycle-events = off 
    netty.tcp { 
     hostname = "127.0.0.1" 
     port = 2550 
    } 
    } 

    cluster { 
    seed-nodes = [ 
     "akka.tcp://[email protected]:2551", 
     "akka.tcp://[email protected]:2556", 
     "akka.tcp://[email protected]:2552"] 

    auto-down-unreachable-after = 10s 
    } 

    persistence { 
    journal { 
     plugin = "cassandra-journal" 
     # Comma-separated list of contact points in the cluster 
     cassandra-journal.contact-points = ["dse-9042.service.consul"] 
    } 

    snapshot-store { 
     plugin = "akka.persistence.cassandra.snapshot.CassandraSnapshotStore" 
     # Comma-separated list of contact points in the cluster 
     cassandra-journal.contact-points = ["dse-9042.service.consul"] 
    } 
    } 

    akka.extensions = ["akka.cluster.client.ClusterClientReceptionist"] 
    akka.actor.default-mailbox.stash-capacity=10000 

} 

在我的項目,我使用以下Maven依賴;

 <dependency> 
      <groupId>com.typesafe.akka</groupId> 
      <artifactId>akka-persistence_2.11</artifactId> 
      <version>2.4.0-RC3</version> 
     </dependency> 
     <dependency> 
      <groupId>com.github.krasserm</groupId> 
      <artifactId>akka-persistence-cassandra_2.11</artifactId> 
      <version>0.3.9</version> 
     </dependency> 

這是我遇到的錯誤:

[INFO] [10/04/2015 16:52:40.906] [main] [akka.remote.Remoting] Starting remoting 
[INFO] [10/04/2015 16:52:41.112] [main] [akka.remote.Remoting] Remoting started; listening on addresses :[akka.tcp://[email protected]:2550] 
[INFO] [10/04/2015 16:52:41.124] [main] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node [akka.tcp://[email protected]:2550] - Starting up... 
[INFO] [10/04/2015 16:52:41.186] [main] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node [akka.tcp://[email protected]:2550] - Registered cluster JMX MBean [akka:type=Cluster] 
[INFO] [10/04/2015 16:52:41.186] [main] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node [akka.tcp://[email protected]:2550] - Started up successfully 
[INFO] [10/04/2015 16:52:41.193] [ClusterSystem-akka.actor.default-dispatcher-3] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node [akka.tcp://[email protected]:2550] - Metrics will be retreived from MBeans, and may be incorrect on some platforms. To increase metric accuracy add the 'sigar.jar' to the classpath and the appropriate platform-specific native libary to 'java.library.path'. Reason: java.lang.ClassNotFoundException: org.hyperic.sigar.Sigar 
[INFO] [10/04/2015 16:52:41.196] [ClusterSystem-akka.actor.default-dispatcher-3] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node [akka.tcp://[email protected]:2550] - Metrics collection has started successfully 
[INFO] [10/04/2015 16:52:41.380] [ClusterSystem-akka.actor.default-dispatcher-17] [akka.cluster.Cluster(akka://ClusterSystem)] Cluster Node [akka.tcp://[email protected]:2550] - Welcome from [akka.tcp://[email protected]:2552] 
Uncaught error from thread [ClusterSystem-akka.actor.default-dispatcher-17] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[ClusterSystem] 
java.lang.AbstractMethodError: akka.persistence.cassandra.journal.CassandraJournal.akka$persistence$journal$WriteJournalBase$_setter_$persistence_$eq(Lakka/persistence/Persistence;)V 
[ERROR] [10/04/2015 16:52:41.950] [ClusterSystem-akka.actor.default-dispatcher-17] [akka.actor.ActorSystemImpl(ClusterSystem)] Uncaught error from thread [ClusterSystem-akka.actor.default-dispatcher-17] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled 
java.lang.AbstractMethodError: akka.persistence.cassandra.journal.CassandraJournal.akka$persistence$journal$WriteJournalBase$_setter_$persistence_$eq(Lakka/persistence/Persistence;)V 
    at akka.persistence.journal.WriteJournalBase$class.$init$(WriteJournalBase.scala:15) 
    at akka.persistence.cassandra.journal.CassandraJournal.<init>(CassandraJournal.scala:17) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
    at java.lang.Class.newInstance(Class.java:438) 
    at akka.util.Reflect$.instantiate(Reflect.scala:44) 
    at akka.actor.NoArgsReflectConstructor.produce(Props.scala:357) 
    at akka.actor.Props.newActor(Props.scala:259) 
    at akka.actor.ActorCell.newActor(ActorCell.scala:561) 
    at akka.actor.ActorCell.create(ActorCell.scala:587) 
    at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:460) 
    at akka.actor.ActorCell.systemInvoke(ActorCell.scala:482) 
    at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:282) 
    at akka.dispatch.Mailbox.run(Mailbox.scala:223) 
    at akka.dispatch.Mailbox.exec(Mailbox.scala:234) 
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) 
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 

    at akka.persistence.journal.WriteJournalBase$class.$init$(WriteJournalBase.scala:15) 
    at akka.persistence.cassandra.journal.CassandraJournal.<init>(CassandraJournal.scala:17) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
    at java.lang.Class.newInstance(Class.java:438) 
    at akka.util.Reflect$.instantiate(Reflect.scala:44) 
    at akka.actor.NoArgsReflectConstructor.produce(Props.scala:357) 
    at akka.actor.Props.newActor(Props.scala:259) 
    at akka.actor.ActorCell.newActor(ActorCell.scala:561) 
    at akka.actor.ActorCell.create(ActorCell.scala:587) 
    at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:460) 
    at akka.actor.ActorCell.systemInvoke(ActorCell.scala:482) 
    at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:282) 
    at akka.dispatch.Mailbox.run(Mailbox.scala:223) 
    at akka.dispatch.Mailbox.exec(Mailbox.scala:234) 
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) 
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) 
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.`enter code here`java:1979) 
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) 

回答

1

請使用穩定版本的Akka 2.4.0(您使用的是Release Candidate),並且還會將cassandra插件的依賴性打到0.4which was released last week並支持Akka 2.4.x

你得到錯誤的原因是你已經拉出了衝突版本的Akka(它是Journal插件API)和Journal實現。 Journal Plugin API在Akka 2.3中是實驗性的,並且在2.4.x中使其穩定時可能發生變化。由於Akka 2.4.0 Journal API是穩定並且不會改變方式。

+0

工作感謝您的幫助。但是,當我們使用cassandra-driver-core:2.1.7.1 jar時會遇到問題。它可以很好的與cassandra-driver-core:2.1.5 jar。我們使用2.1.7.1驅動程序進行分頁支持,但akka持久性不起作用。 – user54

+0

它實際上在2.4.0-RC3下運行良好,但達到0.4版真的幫助了這個原因。我仍然需要弄清2.1.7.1驅動問題。 – user54

+0

請使用一個穩定版本 - 例如2.4.0,而不是RC版本:) –

1

當我從com.github.krasserm repo看到他用

阿卡2.3.11com.github.krasserm 0.3.9

但您使用

阿卡2.4.0com.github.krasserm 0.3.9

嘗試2.3.11com.github.krasserm改變阿卡的版本到版本0.4