public ShardedNotificationHubClient(INHConfiguration configuration) {
    this.configuration = configuration;

    for (Integer shard : configuration.getHubConnectionStrings().keySet()) {
      hubs.put(
          shard,
          createNotificationHubClient(
              configuration.getHubConnectionStrings().get(shard),
              configuration.getHubNames().get(shard)));
    }
  }
 private int getRandomAvailableShard() {
   List<Integer> availableHubs = configuration.getHubsWithFreeSpace();
   return availableHubs.get(random.nextInt(availableHubs.size())).intValue();
 }