aboutsummaryrefslogtreecommitdiff
path: root/weed/mq/topic/partition.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/mq/topic/partition.go')
-rw-r--r--weed/mq/topic/partition.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/weed/mq/topic/partition.go b/weed/mq/topic/partition.go
index 285bdcb36..79c830f13 100644
--- a/weed/mq/topic/partition.go
+++ b/weed/mq/topic/partition.go
@@ -30,3 +30,20 @@ func FromPbPartition(partition *mq_pb.Partition) Partition {
RingSize: partition.RingSize,
}
}
+
+func SplitPartitions(targetCount int32) []*Partition {
+ partitions := make([]*Partition, 0, targetCount)
+ partitionSize := PartitionCount / targetCount
+ for i := int32(0); i < targetCount; i++ {
+ partitionStop := (i + 1) * partitionSize
+ if i == targetCount-1 {
+ partitionStop = PartitionCount
+ }
+ partitions = append(partitions, &Partition{
+ RangeStart: i * partitionSize,
+ RangeStop: partitionStop,
+ RingSize: PartitionCount,
+ })
+ }
+ return partitions
+}