Ejemplo n.º 1
0
        /// <summary>
        /// <para>Sets up given <paramref name="configuration"/> to send requests to an API behind given external <paramref name="url"/>.</para>
        /// <para>Does not set up a transport.</para>
        /// </summary>
        public static void SetupExternalUrl([NotNull] this IClusterClientConfiguration configuration, [NotNull] Uri url)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

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

            if (!url.IsAbsoluteUri)
            {
                throw new ArgumentException($"External url must be an absolute URI. Instead, got this: '{url}'.");
            }

            configuration.ClusterProvider = new FixedClusterProvider(url);

            configuration.MaxReplicasUsedPerRequest = 3;

            configuration.RepeatReplicas(configuration.MaxReplicasUsedPerRequest);

            configuration.ReplicaOrdering = new AsIsReplicaOrdering();

            configuration.SetupReplicaBudgeting(minimumRequests: 10);

            configuration.DefaultRequestStrategy = Strategy.Sequential1;

            configuration.DeduplicateRequestUrl = true;

            configuration.TargetServiceName = url.AbsoluteUri;
        }
        public static void SetupExternalUrlAsSingleReplicaCluster(this IClusterClientConfiguration configuration, Uri url)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            if (url == null)
            {
                throw new ArgumentNullException(nameof(url));
            }
            if (!url.IsAbsoluteUri)
            {
                throw Errors.UrlShouldBeAbsolute(nameof(url), url);
            }

            configuration.ClusterProvider           = new FixedClusterProvider(url);
            configuration.MaxReplicasUsedPerRequest = 1;
            configuration.ReplicaOrdering           = new AsIsReplicaOrdering();
            configuration.SetupReplicaBudgeting(minimumRequests: 10);

            configuration.DefaultRequestStrategy = Strategy.Sequential1;
            configuration.DeduplicateRequestUrl  = true;
            configuration.TargetServiceName      = url.AbsoluteUri;
        }