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