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