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()); } }
public InMemoryQueueTransportReceiver(InMemoryQueueMessageReceiverConfiguration config, BaseServiceBusConfig serviceBusConfig) { QueueName = config.Address; MaxRetries = config.MaxRetries; if (MaxRetries < 0) { MaxRetries = 0; } MaxConcurrency = config.MaxConcurrency; if (MaxConcurrency < 0) { MaxConcurrency = 0; } faultManager = new TransportMessageFaultManager(MaxRetries); }
public PipelineMessageReceiver(PipelineServiceBus bus, BaseMessageReceiverConfiguration config, BaseServiceBusConfig serviceBusConfig) { this.Bus = bus; this.Name = Guid.NewGuid().ToString(); this.ServiceLocator = serviceBusConfig.ServiceLocator; this.MessageMapper = serviceBusConfig.MessageMapper; this.MessageHandlers = config.GetCombinedMessageHandlers(); this.compiledMessageHandlerPipeline = config.GetCompiledMessageHandlerPipeline(); // initialize all known message types this.MessageMapper.Initialize(this.MessageHandlers.Select(x => x.HandledMessageType)); this.Transport = config.CreateTransportReceiver(); this.Transport.MessageAvailable += (sender, args) => OnMessageAvailable(args); this.Transport.PoisonMessageDetected += (sender, args) => OnPoisonMessageDetected(args); this.startupActions.Add(() => this.Transport.Start()); }
public InMemoryQueueTransportSender(BaseServiceBusConfig serviceBusConfig) { }