Exemple #1
0
        public static IBuildTheQueryProcessor DefaultPolicies(this IBuildTheQueryProcessor lastStageBuilder)
        {
            var builder = lastStageBuilder.ToQueryProcessorBuilder();

            var defaultRetryPolicy = Policy
                                     .Handle <Exception>()
                                     .WaitAndRetry(new[]
            {
                TimeSpan.FromMilliseconds(50),
                TimeSpan.FromMilliseconds(100),
                TimeSpan.FromMilliseconds(150)
            });

            var circuitBreakerPolicy = Policy
                                       .Handle <Exception>()
                                       .CircuitBreaker(1, TimeSpan.FromMilliseconds(500));

            var policyRegistry = new PolicyRegistry
            {
                { Constants.RetryPolicyName, defaultRetryPolicy },
                { Constants.CircuitBreakerPolicyName, circuitBreakerPolicy }
            };

            return(builder.ContextBagItem(Constants.ContextBagKey, policyRegistry));
        }
        /// <summary>
        /// Converts the last builder stage to the full builder or throws if the builder instance is not a QueryProcessorBuilder.
        /// This is useful for extending the builder with custom methods.
        /// </summary>
        /// <param name="lastStageBuilder">The builder instance.</param>
        /// <returns></returns>
        public static QueryProcessorBuilder ToQueryProcessorBuilder(this IBuildTheQueryProcessor lastStageBuilder)
        {
            var builder = lastStageBuilder as QueryProcessorBuilder;

            if (builder == null)
            {
                throw new NotSupportedException($"This extension method only supports the default {nameof(QueryProcessorBuilder)}.");
            }

            return(builder);
        }
Exemple #3
0
        public static IBuildTheQueryProcessor DefaultPolicies(this IBuildTheQueryProcessor builder)
        {
            var queryProcessorBuilder = builder as QueryProcessorBuilder;

            if (queryProcessorBuilder == null)
            {
                throw new NotSupportedException($"This extension method only supports the default {nameof(QueryProcessorBuilder)}.");
            }

            AddDefaultPolicies(queryProcessorBuilder);

            return(queryProcessorBuilder);
        }
        public static IBuildTheQueryProcessor JsonQueryLogging(this IBuildTheQueryProcessor builder, Action <JsonSerializerSettings> configure = null)
        {
            var queryProcessorBuilder = builder as QueryProcessorBuilder;

            if (queryProcessorBuilder == null)
            {
                throw new NotSupportedException($"This extension method only supports the default {nameof(QueryProcessorBuilder)}.");
            }

            AddJsonQueryLogging(queryProcessorBuilder, configure);

            return(queryProcessorBuilder);
        }
Exemple #5
0
        public static IBuildTheQueryProcessor JsonQueryLogging(this IBuildTheQueryProcessor lastStageBuilder, Action <JsonSerializerSettings> settings = null)
        {
            var builder = lastStageBuilder.ToQueryProcessorBuilder();

            JsonSerializerSettings serializerSettings = null;

            if (settings != null)
            {
                serializerSettings = new JsonSerializerSettings();
                settings(serializerSettings);
            }

            return(builder.ContextBagItem(Constants.ContextBagKey, new NewtonsftJsonSerializer(serializerSettings)));
        }
Exemple #6
0
        public static IBuildTheQueryProcessor Policies(this IBuildTheQueryProcessor lastStageBuilder, IPolicyRegistry policyRegistry)
        {
            var builder = lastStageBuilder.ToQueryProcessorBuilder();

            if (policyRegistry == null)
            {
                throw new ArgumentNullException(nameof(policyRegistry));
            }

            if (!policyRegistry.Has(Constants.RetryPolicyName))
            {
                throw new ConfigurationException($"The policy registry is missing the {Constants.RetryPolicyName} policy which is required");
            }

            if (!policyRegistry.Has(Constants.CircuitBreakerPolicyName))
            {
                throw new ConfigurationException($"The policy registry is missing the {Constants.CircuitBreakerPolicyName} policy which is required");
            }

            return(builder.ContextBagItem(Constants.ContextBagKey, policyRegistry));
        }