public static ReceiveSettings GetReceiveSettings(this Uri address) { var hostAddress = new RabbitMqHostAddress(address); var endpointAddress = new RabbitMqEndpointAddress(hostAddress, address); var topologyConfiguration = new RabbitMqTopologyConfiguration(RabbitMqBusFactory.MessageTopology); var endpointConfiguration = new RabbitMqEndpointConfiguration(topologyConfiguration); var settings = new RabbitMqReceiveSettings(endpointConfiguration, endpointAddress.Name, endpointAddress.ExchangeType, endpointAddress.Durable, endpointAddress.AutoDelete) { QueueName = endpointAddress.Name, Exclusive = endpointAddress.AutoDelete && !endpointAddress.Durable }; if (hostAddress.Prefetch.HasValue) { settings.PrefetchCount = hostAddress.Prefetch.Value; } if (hostAddress.TimeToLive.HasValue) { settings.QueueArguments.Add(Headers.XMessageTTL, hostAddress.TimeToLive.Value.ToString("F0", CultureInfo.InvariantCulture)); } return(settings); }
public static IServiceBus Create( Action <IMassInstanceBusFactoryConfigurator> configure, IMassInstanceConsumerFactory consumerFactory) { var topologyConfiguration = new RabbitMqTopologyConfiguration(MessageTopology); var busConfiguration = new RabbitMqBusConfiguration(topologyConfiguration); var busEndpointConfiguration = busConfiguration.CreateEndpointConfiguration(); var sagaMessageExtractor = new SagaMessageExtractor(); var configurator = new MassInstanceBusFactoryConfigurator( busConfiguration, busEndpointConfiguration, consumerFactory, sagaMessageExtractor); configure(configurator); var result = BusConfigurationResult.CompileResults(configurator.Validate()); try { return(configurator.CreateBus()); } catch (Exception ex) { throw new ConfigurationException(result, "An exception occurred during bus creation", ex); } }
/// <summary> /// Configure and create a bus for RabbitMQ /// </summary> /// <param name="configure">The configuration callback to configure the bus</param> /// <returns></returns> public static IBusControl Create(Action <IRabbitMqBusFactoryConfigurator> configure = null) { var topologyConfiguration = new RabbitMqTopologyConfiguration(MessageTopology); var busConfiguration = new RabbitMqBusConfiguration(topologyConfiguration); var configurator = new RabbitMqBusFactoryConfigurator(busConfiguration); configure?.Invoke(configurator); return(configurator.Build()); }
private void AddConfiguration(IServiceCollection services) { var queueConfiguration = new RabbitMqTopologyConfiguration(); Configuration.Bind("RabbitMqTopology", queueConfiguration); services.AddSingleton <IRabbitMqTopologyConfiguration>(queueConfiguration); var objectsStorageServiceConfiguration = new ObjectsStorageServiceConfiguration(); Configuration.Bind("ObjectsStorage", objectsStorageServiceConfiguration); services.AddSingleton <IObjectsStorageServiceConfiguration>(objectsStorageServiceConfiguration); }
/// <summary> /// Configure and create a bus for RabbitMQ /// </summary> /// <param name="configure">The configuration callback to configure the bus</param> /// <returns></returns> public static IBusControl Create(Action <IRabbitMqBusFactoryConfigurator> configure) { var topologyConfiguration = new RabbitMqTopologyConfiguration(MessageTopology); var busConfiguration = new RabbitMqBusConfiguration(topologyConfiguration); var busEndpointConfiguration = busConfiguration.CreateEndpointConfiguration(); var configurator = new RabbitMqBusFactoryConfigurator(busConfiguration, busEndpointConfiguration); configure(configurator); return(configurator.Build()); }
public static IApplicationBuilder UseRabbitMq(this IApplicationBuilder app) { try { var configService = app.ApplicationServices.GetService <IConfiguration>(); Configuration = new RabbitMqTopologyConfiguration(); configService.Bind("RabbitMqTopology", Configuration); BusSubscribeService = app.ApplicationServices.GetService <IBusSubscribeService>(); var life = app.ApplicationServices.GetService <IApplicationLifetime>(); life.ApplicationStarted.Register(() => { try { OnStarted(); } catch (Exception e) { Console.WriteLine(e); throw; } }); return(app); } catch (Exception) { if (_probe == ProbesCountMax) { throw; } Console.WriteLine($"Probe {_probe}/{ProbesCountMax}: Checking rabbitClient availability..."); Thread.Sleep(_probe * 1000 * 5); _probe++; return(UseRabbitMq(app)); } }