blob: f5ebb8857fd897ff72b6e966fb2fed3344547611 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* license agreements; and to You under the Apache License, version 2.0:
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* This file is part of the Apache Pekko project, which was derived from Akka.
*/
/*
* Copyright (C) 2020-2022 Lightbend Inc. <https://www.lightbend.com>
*/
package jdocs.eventsourced;
import java.util.List;
import org.apache.pekko.actor.typed.ActorSystem;
import org.apache.pekko.actor.typed.javadsl.Behaviors;
// #eventsBySlicesSourceProvider
import org.apache.pekko.japi.Pair;
import org.apache.pekko.persistence.query.Offset;
import org.apache.pekko.persistence.query.typed.EventEnvelope;
import org.apache.pekko.projection.eventsourced.javadsl.EventSourcedProvider;
import org.apache.pekko.projection.javadsl.SourceProvider;
// #eventsBySlicesSourceProvider
public interface EventSourcedBySlicesDocExample {
public static class R2dbcReadJournal {
public static String Identifier() {
return "pekko.persistence.r2dbc.query";
}
}
public static void illustrateEventsSlicesSourceProvider() {
ActorSystem<Void> system = ActorSystem.create(Behaviors.empty(), "Example");
// #eventsBySlicesSourceProvider
// Slit the slices into 4 ranges
int numberOfSliceRanges = 4;
List<Pair<Integer, Integer>> sliceRanges =
EventSourcedProvider.sliceRanges(
system, R2dbcReadJournal.Identifier(), numberOfSliceRanges);
// Example of using the first slice range
int minSlice = sliceRanges.get(0).first();
int maxSlice = sliceRanges.get(0).second();
String entityType = "MyEntity";
SourceProvider<Offset, EventEnvelope<ShoppingCart.Event>> sourceProvider =
EventSourcedProvider.eventsBySlices(
system, R2dbcReadJournal.Identifier(), entityType, minSlice, maxSlice);
// #eventsBySlicesSourceProvider
}
}