private void ProcessRequest(ConfigurationRequestEvent request)
        {
            Guard.DebugAssertArgumentNotNull(request, nameof(request));

            _log.Debug("Processing configuration request: {ConfigurationKey}, {ReplyAddress}", request.ConfigurationKey, request.ReplyAddress);

            if (string.IsNullOrEmpty(request.ConfigurationKey))
            {
                _log.Debug("Invalid configuration key.");
                return;
            }

            var key           = request.ConfigurationKey;
            var configuration = _configurationProvider.GetConfiguration(key);

            if (string.IsNullOrEmpty(configuration))
            {
                _log.Warning("No configuration found for {ConfigurationKey}, requester: {ReplyAddress}", request.ConfigurationKey, request.ReplyAddress);
                return;
            }

            var reply = new ConfigurationResponseEvent
            {
                Configuration = configuration,
                Address       = request.ReplyAddress
            };

            _eventSender.SendEvent(reply);
            _log.Debug("Configuration request processed.");
        }
Exemple #2
0
        public async Task <TConfiguration> Load(string configKey)
        {
            Guard.DebugAssertArgumentNotNull(configKey, nameof(configKey));

            _log.Debug("Loading configuration {ConfigurationKey}", configKey);

            var request = new ConfigurationRequestEvent()
            {
                ConfigurationKey = configKey,
                ReplyAddress     = _serviceName
            };
            var response = _source.ReceiveEvents <ConfigurationResponseEvent>().FirstAsync();

            _sender.SendEvent(request);

            var config = (await response).Configuration;

            _log.Verbose("Got response, deserializing...");

            var serializerSettings = new JsonSerializerSettings
            {
                TypeNameHandling = TypeNameHandling.Auto,
                Converters       = _converters
            };

            try
            {
                var result = JsonConvert.DeserializeObject <TConfiguration>(config, serializerSettings);
                _log.Debug("Configuration {ConfigurationKey} loaded successfully.", configKey);
                return(result);
            }
            catch (JsonException ex)
            {
                throw new InvalidConfigurationException(ex, $"Error reading json from response.");
            }
        }