diff --git a/pekko-sample-distributed-workers-scala/README.md b/pekko-sample-distributed-workers-scala/README.md
index 3df0d8b1..72331cd2 100644
--- a/pekko-sample-distributed-workers-scala/README.md
+++ b/pekko-sample-distributed-workers-scala/README.md
@@ -254,13 +254,13 @@ As long as one of the four nodes is alive the cluster will keep working. You can
You can start more cluster front-end nodes using port numbers between 3000-3999:
```bash
-sbt "runMain worker.Main 3002
+sbt "runMain worker.Main 3002"
```
Any port outside these ranges creates a worker node, for which you can also play around with the number of worker actors on using the second parameter.
```bash
-sbt "runMain worker.Main 5009 4
+sbt "runMain worker.Main 5009 4"
```
## The journal
diff --git a/pekko-sample-distributed-workers-scala/build.sbt b/pekko-sample-distributed-workers-scala/build.sbt
index d652b042..45c2c7f2 100644
--- a/pekko-sample-distributed-workers-scala/build.sbt
+++ b/pekko-sample-distributed-workers-scala/build.sbt
@@ -17,9 +17,9 @@ libraryDependencies ++= Seq(
"org.apache.pekko" %% "pekko-serialization-jackson" % pekkoVersion,
"org.apache.pekko" %% "pekko-persistence-cassandra" % cassandraPluginVersion,
// this allows us to start cassandra from the sample
- "org.apache.pekko" %% "pekko-persistence-cassandra-launcher" % cassandraPluginVersion,
+ "org.testcontainers" % "testcontainers-cassandra" % "2.0.1",
"ch.qos.logback" % "logback-classic" % logbackVersion,
// test dependencies
"org.apache.pekko" %% "pekko-actor-testkit-typed" % pekkoVersion % Test,
"org.scalatest" %% "scalatest" % "3.2.19" % Test,
- "commons-io" % "commons-io" % "2.11.0" % Test)
+ "commons-io" % "commons-io" % "2.20.0" % Test)
diff --git a/pekko-sample-distributed-workers-scala/src/main/scala/worker/Main.scala b/pekko-sample-distributed-workers-scala/src/main/scala/worker/Main.scala
index 03002fd9..9b2e27a9 100644
--- a/pekko-sample-distributed-workers-scala/src/main/scala/worker/Main.scala
+++ b/pekko-sample-distributed-workers-scala/src/main/scala/worker/Main.scala
@@ -6,7 +6,6 @@ import org.apache.pekko.actor.typed.ActorSystem
import org.apache.pekko.actor.typed.eventstream.EventStream
import org.apache.pekko.actor.typed.scaladsl.{ ActorContext, Behaviors }
import org.apache.pekko.cluster.typed.{ Cluster, SelfUp, Subscribe }
-import org.apache.pekko.persistence.cassandra.testkit.CassandraLauncher
import com.typesafe.config.{ Config, ConfigFactory }
object Main {
@@ -93,16 +92,15 @@ object Main {
* in a real application a pre-existing Apache Cassandra cluster should be used.
*/
def startCassandraDatabase(): Unit = {
- val databaseDirectory = new File("target/cassandra-db")
- CassandraLauncher.start(
- databaseDirectory,
- CassandraLauncher.DefaultTestConfigResource,
- clean = false,
- port = 9042)
+ import org.testcontainers.cassandra.CassandraContainer
+ import org.testcontainers.utility.DockerImageName
+ val container = new CassandraContainer(DockerImageName.parse("cassandra:5.0.5"))
+ // defaults to port 9042
+ container.start()
// shut the cassandra instance down when the JVM stops
sys.addShutdownHook {
- CassandraLauncher.stop()
+ container.stop()
}
}
diff --git a/pekko-sample-persistence-dc-java/pom.xml b/pekko-sample-persistence-dc-java/pom.xml
index 91eb20a8..5106cc17 100644
--- a/pekko-sample-persistence-dc-java/pom.xml
+++ b/pekko-sample-persistence-dc-java/pom.xml
@@ -67,9 +67,9 @@
${pekko-persistence-cassandra.version}
- org.apache.pekko
- pekko-persistence-cassandra-launcher_${scala.binary.version}
- ${pekko-persistence-cassandra.version}
+ org.testcontainers
+ testcontainers-cassandra
+ 2.0.1
org.apache.pekko
diff --git a/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/MainApp.java b/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/MainApp.java
index 4577f15d..eebb3540 100644
--- a/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/MainApp.java
+++ b/pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/MainApp.java
@@ -14,8 +14,9 @@
import org.apache.pekko.cluster.sharding.typed.ReplicatedShardingExtension;
import org.apache.pekko.cluster.typed.Cluster;
import org.apache.pekko.management.javadsl.PekkoManagement;
-import org.apache.pekko.persistence.cassandra.testkit.CassandraLauncher;
import org.apache.pekko.persistence.typed.ReplicaId;
+import org.testcontainers.cassandra.CassandraContainer;
+import org.testcontainers.utility.DockerImageName;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import sample.persistence.res.counter.ThumbsUpCounter;
@@ -81,12 +82,13 @@ private static Config config(int port, String dc) {
* in a real application a pre-existing Cassandra cluster should be used.
*/
private static void startCassandraDatabase() {
- File databaseDirectory = new File("target/cassandra-db");
- CassandraLauncher.start(
- databaseDirectory,
- CassandraLauncher.DefaultTestConfigResource(),
- false,
- 9042);
+ final CassandraContainer container = new CassandraContainer(
+ DockerImageName.parse("cassandra:5.0.5"));
+ // defaults to port 9042
+ container.start();
+
+ // shut the cassandra instance down when the JVM stops
+ Runtime.getRuntime().addShutdownHook(new Thread(() -> container.stop()));
}
}
diff --git a/pekko-sample-persistence-dc-scala/build.sbt b/pekko-sample-persistence-dc-scala/build.sbt
index 5f93e064..09fafc6c 100644
--- a/pekko-sample-persistence-dc-scala/build.sbt
+++ b/pekko-sample-persistence-dc-scala/build.sbt
@@ -20,16 +20,11 @@ libraryDependencies ++= Seq(
"org.apache.pekko" %% "pekko-management" % pekkoClusterManagementVersion,
"org.apache.pekko" %% "pekko-management-cluster-http" % pekkoClusterManagementVersion,
"org.apache.pekko" %% "pekko-persistence-cassandra" % cassandraPluginVersion,
- "org.apache.pekko" %% "pekko-persistence-cassandra-launcher" % cassandraPluginVersion,
+ "org.testcontainers" % "testcontainers-cassandra" % "2.0.1",
"ch.qos.logback" % "logback-classic" % logbackVersion,
"org.apache.pekko" %% "pekko-persistence-testkit" % pekkoVersion % Test,
"org.scalatest" %% "scalatest" % "3.2.19" % Test)
-// transitive dependency of akka 2.5x that is brought in by addons but evicted
-dependencyOverrides += "org.apache.pekko" %% "pekko-protobuf" % pekkoVersion
-dependencyOverrides += "org.apache.pekko" %% "pekko-cluster-tools" % pekkoVersion
-dependencyOverrides += "org.apache.pekko" %% "pekko-coordination" % pekkoVersion
-
licenses := Seq(("CC0", url("http://creativecommons.org/publicdomain/zero/1.0")))
// Startup aliases for the cassandra server and for two seed nodes one for eu-west and another for eu-central
diff --git a/pekko-sample-persistence-dc-scala/src/main/scala/sample/persistence/res/MainApp.scala b/pekko-sample-persistence-dc-scala/src/main/scala/sample/persistence/res/MainApp.scala
index cd780411..cfda199a 100644
--- a/pekko-sample-persistence-dc-scala/src/main/scala/sample/persistence/res/MainApp.scala
+++ b/pekko-sample-persistence-dc-scala/src/main/scala/sample/persistence/res/MainApp.scala
@@ -8,7 +8,6 @@ import org.apache.pekko.actor.typed.scaladsl.Behaviors
import org.apache.pekko.cluster.sharding.typed.{ ReplicatedSharding, ReplicatedShardingExtension }
import org.apache.pekko.http.scaladsl.Http
import org.apache.pekko.management.scaladsl.PekkoManagement
-import org.apache.pekko.persistence.cassandra.testkit.CassandraLauncher
import org.apache.pekko.persistence.typed.ReplicaId
import com.typesafe.config.{ Config, ConfigFactory }
import sample.persistence.res.bank.BankAccount
@@ -88,12 +87,16 @@ object MainApp {
* in a real application a pre-existing Cassandra cluster should be used.
*/
def startCassandraDatabase(): Unit = {
- val databaseDirectory = new File("target/cassandra-db")
- CassandraLauncher.start(
- databaseDirectory,
- CassandraLauncher.DefaultTestConfigResource,
- clean = false,
- port = 9042)
+ import org.testcontainers.cassandra.CassandraContainer
+ import org.testcontainers.utility.DockerImageName
+ val container = new CassandraContainer(DockerImageName.parse("cassandra:5.0.5"))
+ // defaults to port 9042
+ container.start()
+
+ // shut the cassandra instance down when the JVM stops
+ sys.addShutdownHook {
+ container.stop()
+ }
}
}