zu behalten Ich lerne, Lagom Framework zu verwenden, und ich kann nicht verstehen, wie die persistente Seite funktioniert.Wie Status abgerufen werden, ohne es mit Lagom Framework
Mein Beispiel ist einfach: Ich habe einen Produktbestand und mehrere Dienste, die Produkte erstellen, kaufen und bestellen, wodurch der Bestand schwankt. Im Moment behalte ich Produkt mit der Lagermenge zusammen mit jeder Lagerbewegung mit der hinzugefügten/entfernten Menge. Was ich erreichen möchte, ist, nur alle Lagerbewegungen aufrechtzuerhalten und daraus ein Produkt zu schaffen.
Mein Verständnis von Lagom Framework ist, dass ich nicht Produkte beibehalten sollte, sondern stattdessen Ereignisse von Lagerbewegungen. Auf diese Weise werden die Ereignisse verarbeitet, um den aktuellen Status abzurufen, wenn ich den Bestand eines Produkts wissen möchte.
In meiner Service-Implementierung, hier ist, wie ich ein Produkt Zustand jetzt bekommen:
@Override
public ServiceCall<String, NotUsed, Source<Product, ?>> getProduct() {
return (id, req) -> {
Source<Product, ?> result = session.select("SELECT * FROM products WHERE id = ?", id)
.map(row -> new Product(row.getString("id"), row.getString("ean"), row.getLong("quantity")));
return CompletableFuture.completedFuture(result);
};
}
und hier ist, wie ich ein Lager hinzu:
@Override
public ServiceCall<String, Stock, NotUsed> add() {
return (id, request) -> {
log.info("EAN: {}. Supply order received.", id);
PersistentEntityRef<StockCommand> ref = persistentEntityRegistry.refFor(StockEntity.class, id);
return ref.ask(new StockCommand.AddStock(request.amount)).thenApply(r -> NotUsed.getInstance());
};
}
Gibt es eine Möglichkeit mit Lagom zu den Produktzustand nur mit persistenten Ereignissen rekonstruieren? Wie kann es für meine Bedürfnisse erreicht werden?
Es tut mir leid, dass ich vergessen habe, diese Frage zu überprüfen. Dies wurde durch eine komplette Umgestaltung des Projekts gelöst, sodass meine Frage nun irrelevant ist. Danke, dass du versucht hast zu helfen. –