refactor: Moved `ShardingStrategy` into package `persistence` -- ALIGNE
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / persistence / inmemory / KafkaLikeShardingStrategy.java
1 package de.juplo.kafka.chat.backend.persistence.inmemory;
2
3 import de.juplo.kafka.chat.backend.persistence.ShardingStrategy;
4 import lombok.RequiredArgsConstructor;
5 import org.apache.kafka.common.utils.Utils;
6
7 import java.util.UUID;
8
9
10 @RequiredArgsConstructor
11 public class KafkaLikeShardingStrategy implements ShardingStrategy
12 {
13   private final int numPartitions;
14
15   @Override
16   public int selectShard(UUID chatRoomId)
17   {
18     byte[] serializedKey = chatRoomId.toString().getBytes();
19     return Utils.toPositive(Utils.murmur2(serializedKey)) % numPartitions;
20   }
21 }