Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lagom框架/持久读取端/Cassandra/DataStax/未配置表_Cassandra_Datastax_Cqrs_Typesafe_Lagom - Fatal编程技术网

Lagom框架/持久读取端/Cassandra/DataStax/未配置表

Lagom框架/持久读取端/Cassandra/DataStax/未配置表,cassandra,datastax,cqrs,typesafe,lagom,Cassandra,Datastax,Cqrs,Typesafe,Lagom,我成功地编译了源代码示例 这是关于CQRS模式的读取端 唯一的问题是:它无法运行 看起来配置有问题。。。在这一点上,拉贡的官方文件是非常不完整的 错误显示: java.util.concurrent.CompletionException: java.util.concurrent.ExecutionException: com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table postsummar

我成功地编译了源代码示例

这是关于CQRS模式的读取端

唯一的问题是:它无法运行

看起来配置有问题。。。在这一点上,拉贡的官方文件是非常不完整的

错误显示:

java.util.concurrent.CompletionException: java.util.concurrent.ExecutionException: com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table postsummary
好的,代码中有一行代码执行cassandra查询,选择并插入名为postsummary的表

我认为默认情况下这些表是自动创建的。无论如何,出于怀疑,我只是在application.conf中添加了这一行:

cassandra-journal.keyspace-autocreate = true
cassandra-journal.tables-autocreate = true
cassandra-journal.contact-points = ["127.0.0.1"]
cassandra-journal.port = 4000
lagom.persistence.read-side.cassandra.contact-points = ["127.0.0.1"]
lagom.persistence.read-side.cassandra.port = 4000
仍然…,没有运气,重新启动后出现相同错误

可能与启动过程中的另一个错误有关,即:

[warn] a.p.c.j.CassandraJournal - Failed to connect to Cassandra and initialize. It will be retried on demand. Caused by: ServiceLocator is not bound
我想。。。好的,也许它正在尝试联系9042(默认的cassandra端口),而lagom默认在4000启动嵌入式cassandra

因此,我尝试在application.conf中添加以下行:

cassandra-journal.keyspace-autocreate = true
cassandra-journal.tables-autocreate = true
cassandra-journal.contact-points = ["127.0.0.1"]
cassandra-journal.port = 4000
lagom.persistence.read-side.cassandra.contact-points = ["127.0.0.1"]
lagom.persistence.read-side.cassandra.port = 4000
还是…,不走运,同样的错误

有人能帮我解决吗。我需要运行这个示例,这是使用lagom进行CQRS研究的关键部分

一些参考:

以下是一些屏幕截图:


顺便说一句,我通过在代码中创建表来解决这个问题,从事件处理器的prepare方法调用这个方法:

private CompletionStage<Done> prepareTables(CassandraSession session) {
  CompletionStage<Done> preparePostSummary = session.executeCreateTable(
    "CREATE TABLE IF NOT EXISTS postsummary ("
    + "partition bigint, id text, title text, "
    + "PRIMARY KEY (id))"
  ).whenComplete((ok, err) -> {
    if (err != null) {
      System.out.println("Failed to create postsummary table, due to: " + err.getMessage());
    }
  });

  CompletionStage<Done> prepareBlogEventOffset = session.executeCreateTable(
    "CREATE TABLE IF NOT EXISTS blogevent_offset ("
    + "partition bigint, offset uuid, "
    + "PRIMARY KEY (offset))"
  ).whenComplete((ok, err) -> {
    if (err != null) {
      System.out.println("Failed to create blogevent_offset table, due to: " + err.getMessage());
    }
  });

  return preparePostSummary.thenCompose(a -> prepareBlogEventOffset);
}
private CompletionStage准备表(CassandraSession会话){
CompletionStage preparePostSummary=session.executeCreateTable(
“如果不存在,则创建表postsummary(”
+分区bigint、id文本、标题文本、
+“主键(id))”
).完成时((好,错误)->{
if(err!=null){
System.out.println(“未能创建postsummary表,原因是:”+err.getMessage());
}
});
CompletionStage prepareBlogEventOffset=session.executeCreateTable(
“如果不存在blogevent_偏移量,则创建表(”
+分区bigint,偏移量uuid
+“主键(偏移量))”
).完成时((好,错误)->{
if(err!=null){
System.out.println(“未能创建blogevent_偏移表,原因是:”+err.getMessage());
}
});
返回preparePostSummary.thenCompose(a->prepareBlogEventOffset);
}
谢谢!,
拉卡

我这里有一个工作示例。即使不使用自动创建的表:

你好,马库斯,谢谢你指出。但是像其他两个例子(LagomJava和LagomChipper)一样,它仍然使用lagom的M1版本。自M2以来,ServiceCall定义已更改(2个类型参数,而不是3个)。lagom doc网站是指M2。。。我希望你们有机会将这些例子同步到M2上,以免混淆读者。嗨,马库斯:我还有一个关于拉各姆的问题,请帮忙。非常感谢