Esempio n. 1
0
        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"]);
        }
Esempio n. 10
0
    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));
    }
Esempio n. 11
0
 private void ThrowIfConfigInvalid <T>(RabbitMQConsumerOptions <T> options)
 {
     ThrowIfInvalid(options);
     ThrowIfInvalid(options.Queue);
 }
Esempio n. 12
0
 public IConnectionFactory From <T>(RabbitMQConsumerOptions <T> consumerOptions)
 {
     ThrowIfConfigInvalid(consumerOptions);
     return(FromConfig(consumerOptions));
 }