Exemple #1
0
        public static IServiceCollection AddConsul(this IServiceCollection services)
        {
            services.AddTransient(sp =>
            {
                var configuration = sp.GetRequiredService <IConfiguration>();
                var consulOptions = new ConsulOptions();

                var section = configuration.GetSection(ConsulSectionName);
                configuration.Bind(ConsulSectionName, consulOptions);
                return(consulOptions);
            });

            ConsulOptions options;

            using (var provider = services.BuildServiceProvider())
                options = provider.GetService <ConsulOptions>();

            services.AddTransient <IConsulServicesRegistry, ConsulServicesRegistry>();
            services.AddTransient <ConsulServiceDiscoveryMessageHandler>();

            return(services.AddSingleton <IConsulClient>(c => new ConsulClient(cfg =>
            {
                if (!string.IsNullOrEmpty(options.Url))
                {
                    cfg.Address = new Uri(options.Url);
                }
            })));
        }
Exemple #2
0
        public ConsulServiceDiscoveryMessageHandler(IConsulServicesRegistry servicesRegistry,
                                                    ConsulOptions options, string serviceName = null, bool?overrideRequestUri = null)
        {
            if (string.IsNullOrWhiteSpace(options.Url))
            {
                throw new InvalidOperationException("Consul URL was not provided.");
            }

            _servicesRegistry   = servicesRegistry;
            _options            = options;
            _serviceName        = serviceName;
            _overrideRequestUri = overrideRequestUri;
        }