Я изучаю использование Lagom Framework, и я не могу понять, как работает постоянная сторона.Как получить состояние, не сохраняя его с помощью платформы Lagom
Мой пример прост: у меня есть товарный запас и несколько сервисов, которые создают, покупают и заказывают продукцию, делая акции колеблются. В настоящий момент я сохраняю продукт с количеством запасов вместе с каждым движением запаса с добавленным/удаленным количеством. То, что я хотел бы достичь, - это только сохранить все движения акций и создать продукт из них.
Мое понимание Lagom Framework заключается в том, что я не должен упорствовать в продуктах, а вместо этого событий движения запаса. Таким образом, если я хочу знать запас продукта, события обрабатываются каким-то образом для получения текущего состояния.
В моей реализации службы, вот как я получаю состояние продукта на данный момент:
@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);
};
}
и вот как я добавить акцию:
@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());
};
}
Есть ли способ с ЛАГОМ в восстановить состояние продукта только с сохраненными событиями? Как это можно достичь для моих нужд?
Извините, что забыл проверить этот вопрос. Это было решено путем полной реорганизации проекта, и теперь мой вопрос не имеет значения. Спасибо, что пытались помочь. –