public PipelineServiceBus(BaseServiceBusConfig config) { this.Name = Guid.NewGuid().ToString(); this.MessageMapper = config.MessageMapper; this.staticRoutes = new Dictionary <Type, HashSet <string> >(); foreach (var mapping in config.MessageEndpointMappings.OrderByDescending(m => m)) { mapping.Configure((messageType, endpoint) => { if (!staticRoutes.ContainsKey(messageType)) { staticRoutes[messageType] = new HashSet <string>(); } staticRoutes[messageType].Add(endpoint); logger.Debug("Mapping message type [{0}] to endpoint [{1}]", messageType.FullName, endpoint); }); } this.Transport = config.CreateTransportSender(); List <PipelineMessageReceiver> receivers; MessageReceivers = receivers = new List <PipelineMessageReceiver>(); foreach (var receiverConfig in config.MessageReceivers) { var receiver = new PipelineMessageReceiver(this, receiverConfig, config); receivers.Add(receiver); this.startupActions.Add(() => receiver.Start()); } }
internal void OnPoisonMessageDetected(PipelineMessageReceiver sender, PoisonMessageDetectedEventArgs args) { if (PoisonMessageDetected != null) { var callback = PoisonMessageDetected; Task.Run(() => callback(sender, args)); } }
internal void OnMessageProcessed(PipelineMessageReceiver sender, MessageProcessedEventArgs args) { if (MessageProcessed != null) { var callback = MessageProcessed; Task.Run(() => callback(sender, args)); } }