Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }