2017-03-07 60 views
0

我一直在试图为我的Lagom安装设置外部Cassandra。Lagom外部Cassandra身份验证

在根POM我已经写

    <configuration> 
         <unmanagedServices> 
          <cas_native>http://ip:9042</cas_native> 
         </unmanagedServices> 
         <cassandraEnabled>false</cassandraEnabled> 
        </configuration> 

在我IMPL application.conf

akka { 
persistent { 
    journal { 
    akka.persistence.journal.plugin = "this-cassandra-journal" 

     this-cassandra-journal { 
     contact-points = ["10.15.2.179"] 
     port = 9042 
     cluster-id = "cas_native" 

     keyspace = "hello" 

     authentication.username = "cassandra" 
     authentication.password = "rodney" 
     # Parameter indicating whether the journal keyspace should be auto created 
     keyspace-autocreate = true 

     # Parameter indicating whether the journal tables should be auto created 
     tables-autocreate = true 
     } 
    } 

    snapshot-store { 
    akka.persistence.snapshot-store.plugin = "this-cassandra-snapshot-store" 

     this-cassandra-snapshot-store { 
     contact-points = ["10.15.2.179"] 
     port = 9042 
     cluster-id = "cas_native" 

     keyspace = "hello_snap" 
     authentication.username = "cassandra" 
     authentication.password = "rodney" 
     # Parameter indicating whether the journal keyspace should be auto created 
     keyspace-autocreate = true 

     # Parameter indicating whether the journal tables should be auto created 
     tables-autocreate = true 
     } 
    } 

} 

但我得到的错误

[warn] a.p.c.j.CassandraJournal - Failed to connect to Cassandra and initialize. 
It will be retried on demand. Caused by: Authentication error on host /10.15.2. 
179:9042: Host /10.15.2.179:9042 requires authentication, but no authenticator f 
ound in Cluster configuration 
[warn] a.p.c.s.CassandraSnapshotStore - Failed to connect to Cassandra and initi 
alize. It will be retried on demand. Caused by: Authentication error on host /10 
.15.2.179:9042: Host /10.15.2.179:9042 requires authentication, but no authentic 
ator found in Cluster configuration 
[warn] a.p.c.j.CassandraJournal - Failed to connect to Cassandra and initialize. 
It will be retried on demand. Caused by: Authentication error on host /10.15.2. 
179:9042: Host /10.15.2.179:9042 requires authentication, but no authenticator f 
ound in Cluster configuration 
[error] a.c.s.PersistentShardCoordinator - Persistence failure when replaying ev 
ents for persistenceId [/sharding/ProductCoordinator]. Last known sequence numbe 
r [0] 
com.datastax.driver.core.exceptions.AuthenticationException: Authentication erro 
r on host /10.15.2.179:9042: Host /10.15.2.179:9042 requires authentication, but 
no authenticator found in Cluster configuration 
     at com.datastax.driver.core.AuthProvider$1.newAuthenticator(AuthProvider 
.java:40) 
     at com.datastax.driver.core.Connection$5.apply(Connection.java:250) 
     at com.datastax.driver.core.Connection$5.apply(Connection.java:234) 
     at com.google.common.util.concurrent.Futures$AsyncChainingFuture.doTrans 
form(Futures.java:1442) 
     at com.google.common.util.concurrent.Futures$AsyncChainingFuture.doTrans 
form(Futures.java:1433) 
     at com.google.common.util.concurrent.Futures$AbstractChainingFuture.run(
Futures.java:1408) 
     at com.google.common.util.concurrent.Futures$2$1.run(Futures.java:1177) 
     at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService 
.execute(MoreExecutors.java:310) 
     at com.google.common.util.concurrent.Futures$2.execute(Futures.java:1174 
) 

我也尝试过提供这种配置

lagom.persistence.read-side { 
    cassandra { 
    } 
} 

如何通过提供Cassandra的凭据来使其工作?

回答

4

在Lagom,你可能已经在使用akka-persistence-cassandra设置你的journalsnapshot-store(在source code看到reference.conf,并向下滚动的cassandra-snapshot-store.authentication.*)。有没有必要对它进行配置,因为Lagom对Cassandra的持久性的支持已经宣布akka-persistence-cassandra作为阿卡持久化实现:

akka.persistence.journal.plugin = cassandra-journal akka.persistence.snapshot-store.plugin = cassandra-snapshot-store

https://github.com/lagom/lagom/blob/c63383c343b02bd0c267ff176bfb4e48c7202d7d/persistence-cassandra/core/src/main/resources/play/reference-overrides.conf#L5-L6

倒数第三位连接Lagom卡桑德拉时配置是Lagom的阅读-侧。如果您覆盖the defaults,也可以通过application.conf进行操作。

注意如何每个存储可分别使用不同的卡珊德拉环/ KEYSPACE /凭证/ ...所以你可以调整它们。

看到Lagom docs额外的信息。

+0

感谢您的回复。我将我的cassandra版本更改为3.0,并开始工作。不过,我没有几个疑问,首先我的项目是maven。我从任何调试日志都不知道它是否实际连接到Cassandra。另外我的密钥空间不在我正在运行的Cassandra服务器中。当我运行一个sbt项目时,我看到了密钥空间被创建以及一些调试日志。其次,cluster-id总是必须是“cas_native”? –