Package io.namastack.outbox.partition
Class PartitionCoordinator
-
- All Implemented Interfaces:
public final class PartitionCoordinatorCoordinates partition assignment across multiple outbox processor instances.
Handles automatic rebalancing when instances join or leave the cluster, ensuring even distribution of partitions for optimal load balancing.
- Since:
0.2.0
Roland Beisel
-
-
Constructor Summary
Constructors Constructor Description PartitionCoordinator(OutboxInstanceRegistry instanceRegistry)
-
Method Summary
Modifier and Type Method Description final List<Integer>getAssignedPartitions(String instanceId)Gets the partitions assigned to a specific instance. final Map<Integer, String>getCurrentAssignments()Gets all current partition assignments. final StringgetInstanceForPartition(Integer partition)Gets the instance ID that owns a specific partition. final UnitcheckForRebalancing()Checks if any partition assignments need to be updated. final PartitionStatsgetPartitionStats()Gets statistics about current partition distribution. -
-
Constructor Detail
-
PartitionCoordinator
PartitionCoordinator(OutboxInstanceRegistry instanceRegistry)
- Parameters:
instanceRegistry- Registry for managing active instances
-
-
Method Detail
-
getAssignedPartitions
final List<Integer> getAssignedPartitions(String instanceId)
Gets the partitions assigned to a specific instance.
- Parameters:
instanceId- The instance ID to get partitions for- Returns:
List of partition numbers assigned to the instance
-
getCurrentAssignments
final Map<Integer, String> getCurrentAssignments()
Gets all current partition assignments.
- Returns:
Map of partition number to instance ID
-
getInstanceForPartition
final String getInstanceForPartition(Integer partition)
Gets the instance ID that owns a specific partition.
- Parameters:
partition- The partition number- Returns:
Instance ID that owns the partition, or null if not assigned
-
checkForRebalancing
@Scheduled(fixedRate = 15000) final Unit checkForRebalancing()
Checks if any partition assignments need to be updated.
-
getPartitionStats
final PartitionStats getPartitionStats()
Gets statistics about current partition distribution.
- Returns:
PartitionStats object with distribution information
-
-
-
-