+per #15424 Added PersistentView, deprecated View
A PersistentView works the same way as View did previously, except: * it requires an `peristenceId` (no default is provided) * messages given to `receive` are NOT wrapped in Persistent() akka-streams not touched, will update them afterwards on different branch Also solves #15436 by making persistentId in PersistentView abstract. (cherry picked from commit dcafaf788236fe6d018388dd55d5bf9650ded696) Conflicts: akka-docs/rst/java/lambda-persistence.rst akka-docs/rst/java/persistence.rst akka-docs/rst/scala/persistence.rst akka-persistence/src/main/scala/akka/persistence/Persistent.scala akka-persistence/src/main/scala/akka/persistence/View.scala
This commit is contained in:
parent
2203968adb
commit
3fd240384c
22 changed files with 847 additions and 192 deletions
|
|
@ -1,13 +1,17 @@
|
|||
package sample.persistence;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import akka.actor.ActorRef;
|
||||
import akka.actor.ActorSystem;
|
||||
import akka.actor.Props;
|
||||
import akka.japi.Procedure;
|
||||
import akka.persistence.SnapshotOffer;
|
||||
import akka.persistence.UntypedPersistentActor;
|
||||
import akka.persistence.UntypedPersistentView;
|
||||
import scala.concurrent.duration.Duration;
|
||||
|
||||
import akka.actor.*;
|
||||
import akka.persistence.*;
|
||||
import akka.japi.Procedure;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class ViewExample {
|
||||
public class PersistentViewExample {
|
||||
public static class ExamplePersistentActor extends UntypedPersistentActor {
|
||||
private int count = 1;
|
||||
|
||||
|
|
@ -41,32 +45,26 @@ public class ViewExample {
|
|||
}
|
||||
}
|
||||
|
||||
public static class ExampleView extends UntypedView {
|
||||
public static class ExampleView extends UntypedPersistentView {
|
||||
|
||||
private int numReplicated = 0;
|
||||
|
||||
@Override
|
||||
public String viewId() {
|
||||
return "view-5";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String persistenceId() {
|
||||
return "persistentActor-5";
|
||||
}
|
||||
@Override public String persistenceId() { return "persistentActor-5"; }
|
||||
@Override public String viewId() { return "view-5"; }
|
||||
|
||||
@Override
|
||||
public void onReceive(Object message) throws Exception {
|
||||
if (message instanceof Persistent) {
|
||||
Persistent p = (Persistent)message;
|
||||
if (isPersistent()) {
|
||||
numReplicated += 1;
|
||||
System.out.println(String.format("view received %s (num replicated = %d)", p.payload(), numReplicated));
|
||||
System.out.println(String.format("view received %s (num replicated = %d)", message, numReplicated));
|
||||
} else if (message instanceof SnapshotOffer) {
|
||||
SnapshotOffer so = (SnapshotOffer)message;
|
||||
numReplicated = (Integer)so.snapshot();
|
||||
System.out.println(String.format("view received snapshot offer %s (metadata = %s)", numReplicated, so.metadata()));
|
||||
} else if (message.equals("snap")) {
|
||||
saveSnapshot(numReplicated);
|
||||
} else {
|
||||
unhandled(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue