Class PartitionCoordinator

  • All Implemented Interfaces:

    
    public final class PartitionCoordinator
    
                        

    Coordinates 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

    Author:

    Roland Beisel

    • 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

      • 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