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:
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
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. –
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 –