public void Apply(IBusBuilder builder) { var rabbitMqBusBuilder = builder as RabbitMqBusBuilder; if (rabbitMqBusBuilder == null) { throw new ConfigurationException("Must be a RabbitMqBusBuilder"); } var receiveEndpointBuilder = new RabbitMqReceiveEndpointBuilder(builder, _host, rabbitMqBusBuilder.Hosts, _bindMessageExchanges, _configuration); var receivePipe = CreateReceivePipe(receiveEndpointBuilder); var receiveEndpointTopology = receiveEndpointBuilder.CreateReceiveEndpointTopology(InputAddress, _settings); _sendEndpointProvider = receiveEndpointTopology.SendEndpointProvider; _publishEndpointProvider = receiveEndpointTopology.PublishEndpointProvider; var transport = new RabbitMqReceiveTransport(_host, _settings, _managementPipe, receiveEndpointTopology); var rabbitMqHost = _host as RabbitMqHost; if (rabbitMqHost == null) { throw new ConfigurationException("Must be a RabbitMqHost"); } rabbitMqHost.ReceiveEndpoints.Add(_settings.QueueName ?? NewId.Next().ToString(), new ReceiveEndpoint(transport, receivePipe)); }
public override IReceiveEndpoint Build() { var builder = new RabbitMqReceiveEndpointBuilder(this); ApplySpecifications(builder); var receivePipe = CreateReceivePipe(); var receiveEndpointContext = builder.CreateReceiveEndpointContext(); _modelConfigurator.UseFilter(new ConfigureTopologyFilter <ReceiveSettings>(_settings, receiveEndpointContext.BrokerTopology)); IAgent consumerAgent; if (_hostConfiguration.BusConfiguration.DeployTopologyOnly) { var transportReadyFilter = new TransportReadyFilter <ModelContext>(builder.TransportObservers, InputAddress); _modelConfigurator.UseFilter(transportReadyFilter); consumerAgent = transportReadyFilter; } else { if (_settings.PurgeOnStartup) { _modelConfigurator.UseFilter(new PurgeOnStartupFilter(_settings.QueueName)); } _modelConfigurator.UseFilter(new PrefetchCountFilter(_managementPipe, _settings.PrefetchCount)); var deadLetterTransport = CreateDeadLetterTransport(); var errorTransport = CreateErrorTransport(); var consumerFilter = new RabbitMqConsumerFilter(receivePipe, builder.ReceiveObservers, builder.TransportObservers, receiveEndpointContext, deadLetterTransport, errorTransport); _modelConfigurator.UseFilter(consumerFilter); consumerAgent = consumerFilter; } IFilter <ConnectionContext> modelFilter = new ReceiveModelFilter(_modelConfigurator.Build(), _hostConfiguration.Host); _connectionConfigurator.UseFilter(modelFilter); var transport = new RabbitMqReceiveTransport(_hostConfiguration.Host, _settings, _connectionConfigurator.Build(), receiveEndpointContext, builder.ReceiveObservers, builder.TransportObservers); transport.Add(consumerAgent); return(CreateReceiveEndpoint(_settings.QueueName ?? NewId.Next().ToString(), transport, receivePipe, receiveEndpointContext)); }
public void Build(IRabbitMqHostControl host) { var builder = new RabbitMqReceiveEndpointBuilder(host, this); ApplySpecifications(builder); var receiveEndpointContext = builder.CreateReceiveEndpointContext(); _modelConfigurator.UseFilter(new ConfigureTopologyFilter <ReceiveSettings>(_settings, receiveEndpointContext.BrokerTopology)); IAgent consumerAgent; if (_hostConfiguration.DeployTopologyOnly) { var transportReadyFilter = new TransportReadyFilter <ModelContext>(receiveEndpointContext); _modelConfigurator.UseFilter(transportReadyFilter); consumerAgent = transportReadyFilter; } else { if (_settings.PurgeOnStartup) { _modelConfigurator.UseFilter(new PurgeOnStartupFilter(_settings.QueueName)); } _modelConfigurator.UseFilter(new PrefetchCountFilter(_managementPipe, _settings.PrefetchCount)); var consumerFilter = new RabbitMqConsumerFilter(receiveEndpointContext); _modelConfigurator.UseFilter(consumerFilter); consumerAgent = consumerFilter; } IFilter <ConnectionContext> modelFilter = new ReceiveEndpointFilter(_modelConfigurator.Build()); _connectionConfigurator.UseFilter(modelFilter); var transport = new RabbitMqReceiveTransport(host, _settings, _connectionConfigurator.Build(), receiveEndpointContext); transport.Add(consumerAgent); var receiveEndpoint = new ReceiveEndpoint(transport, receiveEndpointContext); var queueName = _settings.QueueName ?? NewId.Next().ToString(FormatUtil.Formatter); host.AddReceiveEndpoint(queueName, receiveEndpoint); ReceiveEndpoint = receiveEndpoint; }
public void Apply(IBusBuilder builder) { RabbitMqReceiveEndpointBuilder endpointBuilder = null; var receivePipe = CreateReceivePipe(builder, consumePipe => { endpointBuilder = new RabbitMqReceiveEndpointBuilder(consumePipe, _host.MessageNameFormatter); return endpointBuilder; }); if (endpointBuilder == null) throw new InvalidOperationException("The endpoint builder was not initialized"); var transport = new RabbitMqReceiveTransport(_host.ConnectionCache, _settings, endpointBuilder.GetExchangeBindings().ToArray()); builder.AddReceiveEndpoint(new ReceiveEndpoint(transport, receivePipe)); }
public void Apply(IBusBuilder builder) { RabbitMqReceiveEndpointBuilder endpointBuilder = null; var receivePipe = CreateReceivePipe(builder, consumePipe => { endpointBuilder = new RabbitMqReceiveEndpointBuilder(consumePipe, _host.MessageNameFormatter); return(endpointBuilder); }); if (endpointBuilder == null) { throw new InvalidOperationException("The endpoint builder was not initialized"); } var transport = new RabbitMqReceiveTransport(_host, _settings, endpointBuilder.GetExchangeBindings().ToArray()); builder.AddReceiveEndpoint(_settings.QueueName ?? NewId.Next().ToString(), new ReceiveEndpoint(transport, receivePipe)); }
public void Build(IHost host) { var builder = new RabbitMqReceiveEndpointBuilder(_hostConfiguration, this); ApplySpecifications(builder); var receiveEndpointContext = builder.CreateReceiveEndpointContext(_settings); _modelConfigurator.UseFilter(new ConfigureTopologyFilter <ReceiveSettings>(_settings, receiveEndpointContext.BrokerTopology)); if (_hostConfiguration.DeployTopologyOnly) { _modelConfigurator.UseFilter(new TransportReadyFilter <ModelContext>(receiveEndpointContext)); } else { if (_settings.PurgeOnStartup) { _modelConfigurator.UseFilter(new PurgeOnStartupFilter(_settings.QueueName)); } _modelConfigurator.UseFilter(new PrefetchCountFilter(_managementPipe, _settings.PrefetchCount)); _modelConfigurator.UseFilter(new RabbitMqConsumerFilter(receiveEndpointContext)); } IPipe <ModelContext> modelPipe = _modelConfigurator.Build(); var transport = new ReceiveTransport <ModelContext>(_hostConfiguration, receiveEndpointContext, () => receiveEndpointContext.ModelContextSupervisor, modelPipe); var receiveEndpoint = new ReceiveEndpoint(transport, receiveEndpointContext); var queueName = _settings.QueueName ?? NewId.Next().ToString(FormatUtil.Formatter); host.AddReceiveEndpoint(queueName, receiveEndpoint); ReceiveEndpoint = receiveEndpoint; }
public void Apply(IBusBuilder builder) { var receiveEndpointBuilder = new RabbitMqReceiveEndpointBuilder(CreateConsumePipe(builder), builder, _bindMessageExchanges, _host); receiveEndpointBuilder.AddExchangeBindings(_exchangeBindings.ToArray()); var receivePipe = CreateReceivePipe(receiveEndpointBuilder); _sendEndpointProvider = CreateSendEndpointProvider(receiveEndpointBuilder); _publishEndpointProvider = CreatePublishEndpointProvider(receiveEndpointBuilder); var transport = new RabbitMqReceiveTransport(_host, _settings, _managementPipe, receiveEndpointBuilder.GetExchangeBindings().ToArray(), _sendEndpointProvider, _publishEndpointProvider); var rabbitMqHost = _host as RabbitMqHost; if (rabbitMqHost == null) { throw new ConfigurationException("Must be a RabbitMqHost"); } rabbitMqHost.ReceiveEndpoints.Add(_settings.QueueName ?? NewId.Next().ToString(), new ReceiveEndpoint(transport, receivePipe)); }