2

Lagom Framework の使用方法を学んでいますが、永続的な側面がどのように機能するかを理解できません。

私の例は単純です。製品の在庫と、製品を作成、購入、注文するいくつかのサービスがあり、在庫が変動します。現時点では、追加/削除された量を含む各在庫の動きとともに、在庫量を含む製品を保持しています。私が達成したいのは、すべての在庫の動きだけを保持し、それらから製品を作成することです。

Lagom Framework についての私の理解では、製品を永続化するのではなく、在庫の動きのイベントを永続化する必要があります。そうすれば、製品の在庫を知りたい場合は、イベントを何らかの方法で処理して現在の状態を取得できます。

私の Service 実装では、今のところ製品の状態を取得する方法は次のとおりです。

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

Lagom を使用して、永続化されたイベントのみで製品の状態を再構築する方法はありますか? 私のニーズをどのように達成できますか?

4

1 に答える 1