2016-05-15 2 views
1

J'ai compilé avec succès l'exemple de code de http://www.lagomframework.com/documentation/1.0.x/ReadSide.htmlcadre Lagom/persistant Lire Side/Cassandra/DataStax/Table déconfigurée

Il est au sujet de la lecture côté du schéma CQRS.

Il n'y a qu'un problème: il ne fonctionne pas.

Ressemble problème de configuration ... et la documentation officielle de Lagom à ce point est très incomplet.

L'erreur dit:

java.util.concurrent.CompletionException: java.util.concurrent.ExecutionException: com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table postsummary 

D'accord, il y a une ligne dans le code qui ne recherche pas cassandra, la sélection & insertion de & à une table nommée postsummary.

Je pensais que les tables sont par défaut créées automatiquement. Quoi qu'il en soit, dans le doute, j'ai simplement ajouté cette ligne à mon application.conf:

cassandra-journal.keyspace-autocreate = true 
cassandra-journal.tables-autocreate = true 

Mais ..., pas de chance, même erreur après le redémarrage.

Peut-être qu'il a quelque chose à voir avec une autre erreur lors du démarrage, qui dit:

[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 

Je pensais que ... bien, peut-être qu'il essaie de contacter 9042 (port par défaut cassandra), alors que lagom par défaut commence cassandra embarqué à 4000.

J'ai essayé d'ajouter ces lignes dans application.conf:

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 

Mais ..., pas de chance, même erreur.

Quelqu'un peut-il me aider à le résoudre. J'ai besoin de faire fonctionner cet exemple, une partie cruciale de l'étude CQRS en utilisant lagom.

Quelques ref .: https://github.com/lagom/lagom/blob/master/persistence/src/main/resources/reference.conf

Voici quelques captures d'écran:

enter image description here

enter image description here


BTW, je l'ai résolu en créant les tables à l'intérieur du code, appelant cette méthode de la méthode de préparation du processeur d'événement:

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); 
} 

Merci !, Raka

Répondre

1
+0

HI Marcus, Merci de remarquer. Mais comme les deux autres exemples (lagom-java et lagom-chirper), il utilise toujours la version M1 de lagom. Et puisque M2 la définition de ServiceCall a été changée (2 paramètres de type au lieu de 3). Le site lagom doc fait référence à M2 ... J'espère que vous avez une chance de synchroniser les exemples avec M2 pour ne pas dérouter les lecteurs. –

+0

Salut Markus: J'ai une autre question à propos de Lagom, s'il vous plaît aider. Merci beaucoup! : http://stackoverflow.com/questions/37241401/lagom-framework-streamed-response-pathcall-descriptor-creator-instead-of –