public ServiceEndpointWithState Select(ServiceEndpointWithState[] availableServicesEndpointWith)
        {
            if (!availableServicesEndpointWith.Any())
                return null;

            var count = availableServicesEndpointWith.Count();

            return availableServicesEndpointWith[Rnd.Next(0, count)];
        }
        public ServiceEndpointWithState Select(ServiceEndpointWithState[] availableServicesEndpointWith)
        {
            var serviceIdentifier = availableServicesEndpointWith.First().ServiceIdentifier;

            var lastPosition = _lastPositions.ContainsKey(serviceIdentifier) ? _lastPositions[serviceIdentifier] : 0;


            var newPosition = (lastPosition + 1) % (availableServicesEndpointWith.Count());

            if(_lastPositions.ContainsKey(serviceIdentifier))
                _lastPositions[serviceIdentifier] = newPosition;
            else
                _lastPositions.Add(serviceIdentifier, newPosition);

            return availableServicesEndpointWith[newPosition];
        }