Example #1
0
        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());
            }
        }
Example #2
0
 internal void OnPoisonMessageDetected(PipelineMessageReceiver sender, PoisonMessageDetectedEventArgs args)
 {
     if (PoisonMessageDetected != null)
     {
         var callback = PoisonMessageDetected;
         Task.Run(() => callback(sender, args));
     }
 }
Example #3
0
 internal void OnMessageProcessed(PipelineMessageReceiver sender, MessageProcessedEventArgs args)
 {
     if (MessageProcessed != null)
     {
         var callback = MessageProcessed;
         Task.Run(() => callback(sender, args));
     }
 }