You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pekko.apache.org by fa...@apache.org on 2022/10/31 09:34:49 UTC

[incubator-pekko-samples] 09/09: roll 3 - java

This is an automated email from the ASF dual-hosted git repository.

fanningpj pushed a commit to branch wip-rolling-update-typed-patriknw
in repository https://gitbox.apache.org/repos/asf/incubator-pekko-samples.git

commit dc25a53d14c9db3edf088abcd6c9b8d0b0a320d5
Author: Patrik Nordwall <pa...@gmail.com>
AuthorDate: Fri Jul 12 09:52:38 2019 +0200

    roll 3 - java
    
    * custom ShardingMessageExtractor can be removed
---
 .../src/main/java/sample/sharding/Device.java      | 44 +++-------------------
 1 file changed, 5 insertions(+), 39 deletions(-)

diff --git a/akka-sample-sharding-typed-java/src/main/java/sample/sharding/Device.java b/akka-sample-sharding-typed-java/src/main/java/sample/sharding/Device.java
index 0310987..4a7a867 100644
--- a/akka-sample-sharding-typed-java/src/main/java/sample/sharding/Device.java
+++ b/akka-sample-sharding-typed-java/src/main/java/sample/sharding/Device.java
@@ -10,9 +10,6 @@ import akka.actor.typed.javadsl.AbstractBehavior;
 import akka.actor.typed.javadsl.ActorContext;
 import akka.actor.typed.javadsl.Behaviors;
 import akka.actor.typed.javadsl.Receive;
-import akka.cluster.sharding.typed.HashCodeMessageExtractor;
-import akka.cluster.sharding.typed.ShardingEnvelope;
-import akka.cluster.sharding.typed.ShardingMessageExtractor;
 import akka.cluster.sharding.typed.javadsl.ClusterSharding;
 import akka.cluster.sharding.typed.javadsl.Entity;
 import akka.cluster.sharding.typed.javadsl.EntityTypeKey;
@@ -23,42 +20,11 @@ public class Device extends AbstractBehavior<Device.Command> {
   public static final EntityTypeKey<Command> TYPE_KEY = EntityTypeKey.create(Command.class, "Device");
 
   public static void init(ActorSystem<?> system) {
-    ShardingMessageExtractor<Object, Command> messageExtractor = new ShardingMessageExtractor<Object, Command>() {
-      final HashCodeMessageExtractor<Command> delegate = new HashCodeMessageExtractor<>(
-        system.settings().config().getInt("akka.cluster.sharding.number-of-shards"));
-
-      @SuppressWarnings("unchecked")
-      @Override
-      public String entityId(Object message) {
-        if (message instanceof RecordTemperature)
-          return String.valueOf(((RecordTemperature) message).deviceId);
-        else if (message instanceof GetTemperature)
-          return String.valueOf(((GetTemperature) message).deviceId);
-        else if (message instanceof ShardingEnvelope)
-          return delegate.entityId((ShardingEnvelope<Command>) message);
-        else
-          return null;
-      }
-
-      @Override
-      public String shardId(String entityId) {
-        return delegate.shardId(entityId);
-      }
-
-      @SuppressWarnings("unchecked")
-      @Override
-      public Command unwrapMessage(Object message) {
-        if (message instanceof Command)
-          return (Command) message;
-        else if (message instanceof ShardingEnvelope)
-          return delegate.unwrapMessage((ShardingEnvelope<Command>) message);
-        else
-          return null;
-      }
-    };
-
-    ClusterSharding.get(system).init(Entity.of(TYPE_KEY, context -> Device.create())
-      .withMessageExtractor(messageExtractor));
+    // If the original hashing function was using
+    // `(math.abs(id.hashCode) % numberOfShards).toString`
+    // the default HashCodeMessageExtractor in Typed can be used.
+    // That is also compatible with `akka.cluster.sharding.ShardRegion.HashCodeMessageExtractor`.
+    ClusterSharding.get(system).init(Entity.of(TYPE_KEY, context -> Device.create()));
   }
 
   public interface Command extends Message {}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pekko.apache.org
For additional commands, e-mail: commits-help@pekko.apache.org