public void Should_be_able_to_retrieve_stored_Policy_using_TryGet()
        {
            Policy policy    = Policy.NoOp();
            string key       = Guid.NewGuid().ToString();
            Policy outPolicy = null;

            _registry.Add(key, policy);
            _registry.TryGet(key, out outPolicy).Should().BeTrue();
            outPolicy.Should().BeSameAs(policy);
        }
Esempio n. 2
0
        private IAsyncPolicy <DurableCircuitBreaker> GetCachePolicy(string circuitBreakerId)
        {
            var key = $"{DurableCircuitBreakerKeyPrefix}{circuitBreakerId}";

            if (policyRegistry.TryGet(key, out IAsyncPolicy <DurableCircuitBreaker> cachePolicy))
            {
                return(cachePolicy);
            }

            TimeSpan checkCircuitInterval = ConfigurationHelper.GetCircuitConfigurationTimeSpan(circuitBreakerId, "PerformancePriorityCheckCircuitInterval", DefaultPerformancePriorityCheckCircuitInterval);

            if (checkCircuitInterval > TimeSpan.Zero)
            {
                cachePolicy = Policy.CacheAsync <DurableCircuitBreaker>(
                    serviceProvider
                    .GetRequiredService <IAsyncCacheProvider>()
                    .AsyncFor <DurableCircuitBreaker>(),
                    checkCircuitInterval);
            }
            else
            {
                cachePolicy = Policy.NoOpAsync <DurableCircuitBreaker>();
            }

            policyRegistry[key] = cachePolicy;

            return(cachePolicy);
        }
 public bool TryGet <TPolicy>(string key, out TPolicy policy) where TPolicy : ICircuitBreakerPolicy
 {
     return(Registry.TryGet(key, out policy));
 }