protected void CreateConsumers() { var subscriber = Connection.GetSubscriber(); Log.Info("Creating consumers"); foreach (var consumerSettings in Settings.Consumers) { Log.InfoFormat(CultureInfo.InvariantCulture, "Creating consumer for {0}", consumerSettings.FormatIf(Log.IsInfoEnabled)); var messageProcessor = new ConsumerInstancePoolMessageProcessor <byte[]>(consumerSettings, this, m => m); AddConsumer(consumerSettings, subscriber, messageProcessor); } if (Settings.RequestResponse != null) { Log.InfoFormat(CultureInfo.InvariantCulture, "Creating response consumer for {0}", Settings.RequestResponse.FormatIf(Log.IsInfoEnabled)); var messageProcessor = new ResponseMessageProcessor <byte[]>(Settings.RequestResponse, this, m => m); AddConsumer(Settings.RequestResponse, subscriber, messageProcessor); } }
protected void CreateConsumers() { var subscriber = Connection.GetSubscriber(); _logger.LogInformation("Creating consumers"); foreach (var consumerSettings in Settings.Consumers) { _logger.LogInformation("Creating consumer for {0}", consumerSettings.FormatIf(_logger.IsEnabled(LogLevel.Information))); var messageProcessor = new ConsumerInstancePoolMessageProcessor <byte[]>(consumerSettings, this, m => m); AddConsumer(consumerSettings, subscriber, messageProcessor); } if (Settings.RequestResponse != null) { _logger.LogInformation("Creating response consumer for {0}", Settings.RequestResponse.FormatIf(_logger.IsEnabled(LogLevel.Information))); var messageProcessor = new ResponseMessageProcessor <byte[]>(Settings.RequestResponse, this, m => m); AddConsumer(Settings.RequestResponse, subscriber, messageProcessor); } }
protected override void Build() { base.Build(); _producerByTopic = new SafeDictionaryWrapper <string, ITopicClient>(topic => { Log.DebugFormat(CultureInfo.InvariantCulture, "Creating {0} for name {1}", nameof(ITopicClient), topic); return(ProviderSettings.TopicClientFactory(topic)); }); _producerByQueue = new SafeDictionaryWrapper <string, IQueueClient>(queue => { Log.DebugFormat(CultureInfo.InvariantCulture, "Creating {0} for name {1}", nameof(IQueueClient), queue); return(ProviderSettings.QueueClientFactory(queue)); }); foreach (var producerSettings in Settings.Producers) { var producerKind = producerSettings.GetKind(); PathKind existingKind; var topic = producerSettings.DefaultTopic; if (topic != null) { if (_kindByTopic.TryGetValue(topic, out existingKind)) { if (existingKind != producerKind) { throw new ConfigurationMessageBusException($"The same name '{topic}' was used for queue and topic. You cannot share one name for a topic and queue. Please fix your configuration."); } } else { _kindByTopic.Add(topic, producerKind); } } if (_kindByMessageType.TryGetValue(producerSettings.MessageType, out existingKind)) { if (existingKind != producerKind) { throw new ConfigurationMessageBusException($"The same message type '{producerSettings.MessageType}' was used for queue and topic. You cannot share one message type for a topic and queue. Please fix your configuration."); } } else { _kindByMessageType.Add(producerSettings.MessageType, producerKind); } } byte[] getPayload(Message m) => m.Body; void initConsumerContext(Message m, ConsumerContext ctx) => ctx.SetTransportMessage(m); Log.Info("Creating consumers"); foreach (var consumerSettings in Settings.Consumers) { Log.InfoFormat(CultureInfo.InvariantCulture, "Creating consumer for {0}", consumerSettings.FormatIf(Log.IsInfoEnabled)); var messageProcessor = new ConsumerInstancePoolMessageProcessor <Message>(consumerSettings, this, getPayload, initConsumerContext); AddConsumer(consumerSettings, messageProcessor); } if (Settings.RequestResponse != null) { Log.InfoFormat(CultureInfo.InvariantCulture, "Creating response consumer for {0}", Settings.RequestResponse.FormatIf(Log.IsInfoEnabled)); var messageProcessor = new ResponseMessageProcessor <Message>(Settings.RequestResponse, this, getPayload); AddConsumer(Settings.RequestResponse, messageProcessor); } }
public ServiceBusMessageBus(MessageBusSettings settings, ServiceBusMessageBusSettings serviceBusSettings) : base(settings) { ServiceBusSettings = serviceBusSettings; _producerByTopic = new SafeDictionaryWrapper <string, ITopicClient>(topic => { Log.DebugFormat(CultureInfo.InvariantCulture, $"Creating {nameof(ITopicClient)} for name {0}", topic); return(ServiceBusSettings.TopicClientFactory(topic)); }); _producerByQueue = new SafeDictionaryWrapper <string, IQueueClient>(queue => { Log.DebugFormat(CultureInfo.InvariantCulture, $"Creating {nameof(IQueueClient)} for name {0}", queue); return(ServiceBusSettings.QueueClientFactory(queue)); }); foreach (var producerSettings in settings.Producers) { var producerKind = producerSettings.GetKind(); PathKind existingKind; var topic = producerSettings.DefaultTopic; if (topic != null) { if (_kindByTopic.TryGetValue(topic, out existingKind)) { if (existingKind != producerKind) { throw new InvalidConfigurationMessageBusException($"The same name '{topic}' was used for queue and topic. You cannot share one name for a topic and queue. Please fix your configuration."); } } else { _kindByTopic.Add(topic, producerKind); } } if (_kindByMessageType.TryGetValue(producerSettings.MessageType, out existingKind)) { if (existingKind != producerKind) { throw new InvalidConfigurationMessageBusException($"The same message type '{producerSettings.MessageType}' was used for queue and topic. You cannot share one message type for a topic and queue. Please fix your configuration."); } } else { _kindByMessageType.Add(producerSettings.MessageType, producerKind); } } Log.Info("Creating consumers"); foreach (var consumerSettings in settings.Consumers) { Log.InfoFormat(CultureInfo.InvariantCulture, "Creating consumer for {0}", consumerSettings.FormatIf(Log.IsInfoEnabled)); var messageProcessor = new ConsumerInstancePool <Message>(consumerSettings, this, m => m.Body); AddConsumer(consumerSettings, messageProcessor); } if (settings.RequestResponse != null) { Log.InfoFormat(CultureInfo.InvariantCulture, "Creating response consumer for {0}", settings.RequestResponse.FormatIf(Log.IsInfoEnabled)); var messageProcessor = new ResponseMessageProcessor <Message>(settings.RequestResponse, this, m => m.Body); AddConsumer(settings.RequestResponse, messageProcessor); } }