doc: stylish cluster.md, #24717
This commit is contained in:
parent
ec6fab4481
commit
072de362d5
3 changed files with 22 additions and 16 deletions
|
|
@ -5,6 +5,7 @@
|
|||
package jdocs.akka.cluster.typed;
|
||||
|
||||
// #cluster-imports
|
||||
import akka.actor.Address;
|
||||
import akka.actor.typed.*;
|
||||
import akka.actor.typed.javadsl.*;
|
||||
import akka.cluster.ClusterEvent;
|
||||
|
|
@ -78,19 +79,20 @@ public class BasicClusterExampleTest { // extends JUnitSuite {
|
|||
Cluster cluster = Cluster.get(system);
|
||||
Cluster cluster2 = Cluster.get(system2);
|
||||
|
||||
// #cluster-subscribe
|
||||
TestProbe<ClusterEvent.MemberEvent> testProbe = TestProbe.create(system);
|
||||
cluster
|
||||
.subscriptions()
|
||||
.tell(Subscribe.create(testProbe.ref(), ClusterEvent.MemberEvent.class));
|
||||
ActorRef<ClusterEvent.MemberEvent> subscriber = testProbe.getRef();
|
||||
// #cluster-subscribe
|
||||
cluster.subscriptions().tell(Subscribe.create(subscriber, ClusterEvent.MemberEvent.class));
|
||||
// #cluster-subscribe
|
||||
|
||||
Address anotherMemberAddress = cluster2.selfMember().address();
|
||||
// #cluster-leave-example
|
||||
cluster.manager().tell(Leave.create(anotherMemberAddress));
|
||||
// subscriber will receive events MemberLeft, MemberExited and MemberRemoved
|
||||
// #cluster-leave-example
|
||||
cluster.manager().tell(Leave.create(cluster2.selfMember().address()));
|
||||
testProbe.expectMessageClass(ClusterEvent.MemberLeft.class);
|
||||
testProbe.expectMessageClass(ClusterEvent.MemberExited.class);
|
||||
testProbe.expectMessageClass(ClusterEvent.MemberRemoved.class);
|
||||
// #cluster-leave-example
|
||||
|
||||
} finally {
|
||||
system.terminate();
|
||||
|
|
|
|||
|
|
@ -118,17 +118,17 @@ class BasicClusterManualSpec extends WordSpec with ScalaFutures with Eventually
|
|||
|
||||
try {
|
||||
//#cluster-create
|
||||
val cluster1 = Cluster(system)
|
||||
val cluster = Cluster(system)
|
||||
//#cluster-create
|
||||
val cluster2 = Cluster(system2)
|
||||
|
||||
//#cluster-join
|
||||
cluster1.manager ! Join(cluster1.selfMember.address)
|
||||
cluster.manager ! Join(cluster.selfMember.address)
|
||||
//#cluster-join
|
||||
cluster2.manager ! Join(cluster1.selfMember.address)
|
||||
cluster2.manager ! Join(cluster.selfMember.address)
|
||||
|
||||
eventually {
|
||||
cluster1.state.members.toList.map(_.status) shouldEqual List(MemberStatus.up, MemberStatus.up)
|
||||
cluster.state.members.toList.map(_.status) shouldEqual List(MemberStatus.up, MemberStatus.up)
|
||||
cluster2.state.members.toList.map(_.status) shouldEqual List(MemberStatus.up, MemberStatus.up)
|
||||
}
|
||||
|
||||
|
|
@ -137,7 +137,7 @@ class BasicClusterManualSpec extends WordSpec with ScalaFutures with Eventually
|
|||
//#cluster-leave
|
||||
|
||||
eventually {
|
||||
cluster1.state.members.toList.map(_.status) shouldEqual List(MemberStatus.up)
|
||||
cluster.state.members.toList.map(_.status) shouldEqual List(MemberStatus.up)
|
||||
cluster2.isTerminated shouldEqual true
|
||||
}
|
||||
} finally {
|
||||
|
|
@ -157,10 +157,12 @@ class BasicClusterManualSpec extends WordSpec with ScalaFutures with Eventually
|
|||
val cluster1 = Cluster(system1)
|
||||
val cluster2 = Cluster(system2)
|
||||
val cluster3 = Cluster(system3)
|
||||
def cluster = cluster1
|
||||
|
||||
//#cluster-subscribe
|
||||
val probe1 = TestProbe[MemberEvent]()(system1)
|
||||
cluster1.subscriptions ! Subscribe(probe1.ref, classOf[MemberEvent])
|
||||
val subscriber = probe1.ref
|
||||
//#cluster-subscribe
|
||||
cluster.subscriptions ! Subscribe(subscriber, classOf[MemberEvent])
|
||||
//#cluster-subscribe
|
||||
|
||||
cluster1.manager ! Join(cluster1.selfMember.address)
|
||||
|
|
@ -193,14 +195,16 @@ class BasicClusterManualSpec extends WordSpec with ScalaFutures with Eventually
|
|||
.map(_.status) shouldEqual List(MemberStatus.up, MemberStatus.up, MemberStatus.up)
|
||||
}
|
||||
|
||||
val anotherMemberAddress = cluster2.selfMember.address
|
||||
//#cluster-leave-example
|
||||
cluster.manager ! Leave(anotherMemberAddress)
|
||||
// subscriber will receive events MemberLeft, MemberExited and MemberRemoved
|
||||
//#cluster-leave-example
|
||||
cluster1.manager ! Leave(cluster2.selfMember.address)
|
||||
probe1.within(10.seconds) {
|
||||
probe1.expectMessageType[MemberLeft].member.address shouldEqual cluster2.selfMember.address
|
||||
probe1.expectMessageType[MemberExited].member.address shouldEqual cluster2.selfMember.address
|
||||
probe1.expectMessageType[MemberRemoved].member.address shouldEqual cluster2.selfMember.address
|
||||
}
|
||||
//#cluster-leave-example
|
||||
|
||||
eventually {
|
||||
cluster1.state.members.toList.map(_.status) shouldEqual List(MemberStatus.up, MemberStatus.up)
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ Cluster `subscriptions` can be used to receive messages when cluster state chang
|
|||
for all `MemberEvent`s, then using the `manager` to have a node leave the cluster will result in events
|
||||
for the node going through the lifecycle described in @ref:[Cluster Specification](../common/cluster.md).
|
||||
|
||||
This example subscribes with a `TestProbe` but in a real application it would be an Actor:
|
||||
This example subscribes with a @scala[`subscriber: ActorRef[MemberEvent]`]@java[`ActorRef<MemberEvent> subscriber`]:
|
||||
|
||||
Scala
|
||||
: @@snip [BasicClusterExampleSpec.scala](/akka-cluster-typed/src/test/scala/docs/akka/cluster/typed/BasicClusterExampleSpec.scala) { #cluster-subscribe }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue