コード例 #1
0
 /**
  * Return the shard for this timestamp
  *
  * @param message
  * @return
  */
 private String getShardKey(long messageTime, int modShard) {
   long timePartition;
   if (metadata.getPartitionDuration() != null)
     timePartition =
         (messageTime / metadata.getPartitionDuration()) % metadata.getPartitionCount();
   else timePartition = 0;
   return getName() + ":" + timePartition + ":" + modShard;
 }
コード例 #2
0
  @Override
  public Map<String, Integer> getShardCounts() throws MessageQueueException {
    try {
      List<String> keys = Lists.newArrayList();
      for (int i = 0; i < metadata.getPartitionCount(); i++) {
        for (int j = 0; j < metadata.getShardCount(); j++) {
          keys.add(getName() + ":" + i + ":" + j);
        }
      }

      Map<String, Integer> result = Maps.newTreeMap();
      result.putAll(
          keyspace
              .prepareQuery(queueColumnFamily)
              .getKeySlice(keys)
              .getColumnCounts()
              .execute()
              .getResult());
      return result;
    } catch (ConnectionException e) {
      throw new MessageQueueException("Failed to get counts", e);
    }
  }