private IMessageConsumer <string> GetRabbitMQMessageConsumer( IRabbitMQConnectionFactory rabbitMqConnectionFactory = null, RabbitMQConsumerOptions <string> options = null, IHostApplicationLifetime applicationLifetime = null) { rabbitMqConnectionFactory ??= GetDefaultConnectionFactoryMock().Object; applicationLifetime ??= FakeApplicationLifetime; var optionsWrapper = new OptionsWrapper <RabbitMQConsumerOptions <string> >(options ?? GetConfig()); return(new RabbitMQMessageConsumer <string>(FakeLogger, rabbitMqConnectionFactory, optionsWrapper, applicationLifetime, GetApplicationNameService(), new JsonEventFormatter())); }
public void BindConsumerOptions_ConfigWithRoutingKey_ContainsRoutingKey() { var config = GetJsonConfig("consumer-routing-key"); var consumerOptions = new RabbitMQConsumerOptions <string>(); config.Bind(consumerOptions); Assert.NotNull(consumerOptions.Queue.Bindings); Assert.Equal("exchange", consumerOptions.Queue.Bindings[0].Exchange); Assert.Equal("routing", consumerOptions.Queue.Bindings[0].RoutingKey); Assert.Equal("teststring", consumerOptions.Queue.Bindings[0].Arguments["string"]); }
private IMessageConsumer <string> GetRabbitMQMessageConsumer( IRabbitMQConnectionFactory <string>?rabbitMqConnectionFactory = null, RabbitMQConsumerOptions <string>?options = null, IHostApplicationLifetime?applicationLifetime = null) { rabbitMqConnectionFactory ??= GetDefaultConnectionFactoryMock <string>().Object; applicationLifetime ??= FakeApplicationLifetime; var optionsWrapper = Options.Create(options ?? GetConfig()); return(new RabbitMQMessageConsumer <string>(FakeLogger, rabbitMqConnectionFactory, optionsWrapper, applicationLifetime, GetApplicationNameService())); }
public RabbitMQMessageConsumer(ILogger <RabbitMQMessageConsumer <T> > logger, IRabbitMQConnectionFactory connectionFactory, IOptions <RabbitMQConsumerOptions <T> > config, IHostApplicationLifetime applicationLifetime, IApplicationNameService applicationNameService, ICloudEventFormatter cloudEventFormatter) { _logger = logger; _connectionFactory = connectionFactory; _options = config.Value; _applicationLifetime = applicationLifetime; _applicationNameService = applicationNameService; _cloudEventFormatter = cloudEventFormatter; }
public RabbitMQMessageConsumer(ILogger <RabbitMQMessageConsumer <T> > logger, IRabbitMQConnectionFactory <T> connectionFactory, IOptions <RabbitMQConsumerOptions <T> > config, IHostApplicationLifetime applicationLifetime, IApplicationNameService applicationNameService) { _logger = logger; ConnectionFactory = connectionFactory; _options = config.Value; _applicationLifetime = applicationLifetime; _applicationNameService = applicationNameService; }
public void FromConsumerConfig_NoQueueConfig_Throws() { var cfg = new RabbitMQConsumerOptions <string> { Host = "host", VirtualHost = "vHost", User = "******", Password = "******", Queue = null }; Assert.Throws <ValidationException>(() => RabbitMQConnectionFactory <string> .From(cfg)); }
public void BindConsumerOptions_ConfigWithoutQueue_ContainsAllValues() { var config = GetJsonConfig("consumer-no-queue"); var consumerOptions = new RabbitMQConsumerOptions <string>(); config.Bind(consumerOptions); Assert.Equal("hostname", consumerOptions.Host); Assert.Equal(10000, consumerOptions.Port); Assert.Equal("username", consumerOptions.User); Assert.Equal("password", consumerOptions.Password); Assert.Equal("vhost", consumerOptions.VirtualHost); Assert.Equal(10000, consumerOptions.PrefetchCount); }
public void BindConsumerOptions_ConfigWithDefaultValues_ContainDefaultValues() { var config = GetJsonConfig("consumer-default-values"); var consumerOptions = new RabbitMQConsumerOptions <string>(); config.Bind(consumerOptions); Assert.Equal(5672, consumerOptions.Port); Assert.Equal(0, TimeSpan.FromSeconds(60).CompareTo(consumerOptions.RequestedHeartbeat)); Assert.Equal("", consumerOptions.VirtualHost); Assert.Equal(10, consumerOptions.PrefetchCount); Assert.True(consumerOptions.Queue.Durable); Assert.False(consumerOptions.Queue.AutoDelete); Assert.Equal(1_000_000, consumerOptions.Queue.MaxLength); Assert.Equal(255, consumerOptions.Queue.MaxPriority); Assert.Equal(86_400_000, consumerOptions.Queue.MessageTtl); }
public void BindConsumerOptions_ConfigWithQueueWithNoBindings_ContainsQueue() { var jsonConfig = GetJsonConfig("consumer-queue"); var consumerOptions = new RabbitMQConsumerOptions <string>(); jsonConfig.Bind(consumerOptions); Assert.NotNull(consumerOptions.Queue); Assert.Empty(consumerOptions.Queue.Bindings); Assert.Equal("test", consumerOptions.Queue.Name); Assert.False(consumerOptions.Queue.Durable); Assert.True(consumerOptions.Queue.AutoDelete); Assert.Equal(10, consumerOptions.Queue.MaxLength); Assert.Equal(20, consumerOptions.Queue.MaxPriority); Assert.Equal(30, consumerOptions.Queue.MessageTtl); Assert.Equal("teststring", consumerOptions.Queue.Arguments["string"]); }
public static void AddRabbitMQWithConfig <T>(this IConsumerBuilder <T> builder, IConfiguration config) where T : notnull { builder.AddTransient <CloudEventFormatter, JsonEventFormatter>(); var consumerOptions = new RabbitMQConsumerOptions <T>(); config.Bind(consumerOptions); var connectionFactory = RabbitMQConnectionFactory <T> .From(consumerOptions); builder.AddConsumer(sp => new RabbitMQMessageConsumer <T>( sp.GetRequiredService <ILogger <RabbitMQMessageConsumer <T> > >(), connectionFactory, MSOptions.Create(consumerOptions), sp.GetRequiredService <IHostApplicationLifetime>(), sp.GetRequiredService <IApplicationNameService>())); builder.AddSingleton <IQueueMonitor>(sp => new RabbitMQQueueMonitor <T>(sp.GetRequiredService <ILogger <RabbitMQQueueMonitor <T> > >(), MSOptions.Create(consumerOptions), connectionFactory)); }
private void ThrowIfConfigInvalid <T>(RabbitMQConsumerOptions <T> options) { ThrowIfInvalid(options); ThrowIfInvalid(options.Queue); }
public IConnectionFactory From <T>(RabbitMQConsumerOptions <T> consumerOptions) { ThrowIfConfigInvalid(consumerOptions); return(FromConfig(consumerOptions)); }