/// <summary> /// Gets the shardlet from the specified shard set name and distribution key. /// </summary> /// <param name="distributionKey">The distribution key.</param> /// <returns>AzureShardlet.</returns> public AzureShardlet Get(long distributionKey) { var cachedShardlet = AzureCache.Get <CacheShardlet>(GetCacheKey(_cacheType, _shardSetName, LongBasedRowKeyEntity.MakeRowKeyFromLong(distributionKey))); if (cachedShardlet != null) { return(cachedShardlet.ToAzureShardlet()); } var rowKey = LongBasedRowKeyEntity.MakeRowKeyFromLong(distributionKey); var condition1 = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, _shardSetName); var condition2 = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowKey); var condition = TableQuery.CombineFilters(condition1, TableOperators.And, condition2); var query = new TableQuery <AzureShardlet>() .Where(condition); IEnumerable <AzureShardlet> result = null; RetryPolicyFactory.GetDefaultAzureStorageRetryPolicy() .ExecuteAction(() => result = _table.ExecuteQuery(query)); var azureShardlet = result.FirstOrDefault(); Cache(azureShardlet); return(azureShardlet); }
/// <summary> /// Gets the Azure Range Shard for the shard set and distribution key /// </summary> /// <param name="shardSetName">Name of the shard set.</param> /// <param name="distributionKey">The distribution key.</param> /// <returns>AzureRangeShard.</returns> public AzureRangeShard GetAzureRangeShard(string shardSetName, long distributionKey) { var rowKey = LongBasedRowKeyEntity.MakeRowKeyFromLong(distributionKey); var repository = new AzureRangeShardRepository(); return(repository.Get(shardSetName, rowKey)); }
/// <summary> /// Gets the action. /// </summary> /// <param name="queueId">The queue identifier.</param> /// <returns>TAction.</returns> protected TAction GetAction(long queueId) { var rowKey = LongBasedRowKeyEntity.MakeRowKeyFromLong(queueId); var condition = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowKey); var query = new TableQuery <TAction>() .Where(condition); var table = TableClient.GetTableReference(TableName); TAction result = null; RetryPolicyFactory.GetDefaultAzureStorageRetryPolicy() .ExecuteAction(() => { result = table.ExecuteQuery(query).FirstOrDefault(); }); return(result); }