public IServiceBus CreateServiceBus(MassTransitConnectionDescriptor connectionDescriptor, IQueueStrategy queueStrategy, IReadOnlyList <Action <SubscriptionBusServiceConfigurator> > subscriptions)
        {
            UriBuilder builder = new UriBuilder(connectionDescriptor.Host)
            {
                Scheme = "loopback"
            };

            return(ServiceBusFactory.New(bus =>
            {
                var receiveUri = new Uri(builder.Uri, queueStrategy.GetQueueName());

                bus.ReceiveFrom(receiveUri);
                bus.UseJsonSerializer();

                bus.ConfigureJsonSerializer(ConfigureIsoDateTimeConverters);
                bus.ConfigureJsonDeserializer(ConfigureIsoDateTimeConverters);

                foreach (var subscription in subscriptions)
                {
                    bus.Subscribe(subscription);
                }

                bus.Validate();
            }));
        }
        public IServiceBus CreateServiceBus(MassTransitConnectionDescriptor connectionDescriptor, IQueueStrategy queueStrategy, IReadOnlyList <Action <SubscriptionBusServiceConfigurator> > subscriptions)
        {
            return(ServiceBusFactory.New(bus =>
            {
                var receiveUri = new Uri(connectionDescriptor.Host, queueStrategy.GetQueueName());

                bus.UseRabbitMq(r =>
                {
                    r.ConfigureHost(receiveUri, h =>
                    {
                        h.SetUsername(connectionDescriptor.UserName);
                        h.SetPassword(connectionDescriptor.Password);
                    });
                });

                bus.ReceiveFrom(receiveUri);
                bus.UseJsonSerializer();

                bus.ConfigureJsonSerializer(ConfigureIsoDateTimeConverters);
                bus.ConfigureJsonDeserializer(ConfigureIsoDateTimeConverters);

                bus.SetConcurrentConsumerLimit(_concurrencyLimit);

                foreach (var subscription in subscriptions)
                {
                    bus.Subscribe(subscription);
                }

                bus.Validate();
            }));
        }
예제 #3
0
        public static IServiceCollection AddNybusLegacyWithMassTransit(this IServiceCollection services, NybusLegacyConfiguration configuration)
        {
            services.AddNybusLegacy(configuration.NybusConfigurator, configuration.SubscriptionsConfigurator);

            services.AddSingleton(sp =>
            {
                var options = new MassTransitOptions();

                configuration.MassTransitConfigurator?.Invoke(options);

                return(options);
            });

            services.AddSingleton(sp =>
            {
                var cfg = sp.GetRequiredService <IConfiguration>();
                var connectionString = cfg.GetConnectionString(configuration.ConnectionStringName);

                return(MassTransitConnectionDescriptor.Parse(connectionString));
            });

            services.AddSingleton <IBusEngine>(sp =>
            {
                var descriptor = sp.GetRequiredService <MassTransitConnectionDescriptor>();

                var options = sp.GetRequiredService <MassTransitOptions>();

                return(new MassTransitBusEngine(descriptor, options));
            });

            return(services);
        }
예제 #4
0
        public void FromConfiguration_returns_null_if_item_cant_be_found()
        {
            var nameOfConnectionString = fixture.Create <string>();

            var descriptor = MassTransitConnectionDescriptor.FromConfiguration(nameOfConnectionString);

            Assert.That(descriptor, Is.Null);
        }
 public RabbitMqServiceBusFactory(MassTransitConnectionDescriptor connectionDescriptor, RabbitMqOptions rabbitMqOptions)
 {
     if (connectionDescriptor == null)
     {
         throw new ArgumentNullException(nameof(connectionDescriptor));
     }
     if (rabbitMqOptions == null)
     {
         throw new ArgumentNullException(nameof(rabbitMqOptions));
     }
     _connectionDescriptor = connectionDescriptor;
     _rabbitMqOptions      = rabbitMqOptions;
 }
예제 #6
0
        public void Initialize()
        {
            mockCommandQueuePolicy = new Mock <IQueuePolicy>();

            mockEventQueuePolicy = new Mock <IQueuePolicy>();

            _options = new RabbitMqOptions
            {
                CommandQueuePolicy = mockCommandQueuePolicy.Object,
                EventQueuePolicy   = mockEventQueuePolicy.Object
            };

            _connectionDescriptor = Fixture.Create <MassTransitConnectionDescriptor>();
        }
예제 #7
0
        public void MassTransitConnectionDescriptor_can_be_parsed_from_connection_string()
        {
            var host     = fixture.Create <Uri>();
            var username = fixture.Create <string>();
            var password = fixture.Create <string>();

            var connectionString = $"host={host};username={username};password={password}";

            var descriptor = MassTransitConnectionDescriptor.Parse(connectionString);

            Assert.That(descriptor, Is.Not.Null);
            Assert.That(descriptor.Host, Is.EqualTo(host));
            Assert.That(descriptor.UserName, Is.EqualTo(username));
            Assert.That(descriptor.Password, Is.EqualTo(password));
        }
        public void Initialize()
        {
            fixture = new Fixture();

            commandQueueName = fixture.Create <string>();
            eventQueueName   = fixture.Create <string>();

            mockLoggerFactory = new Mock <ILoggerFactory>();
            mockLogger        = new Mock <ILogger>();

            mockLoggerFactory.Setup(p => p.CreateLogger(It.IsAny <string>())).Returns(() => mockLogger.Object);

            mockContextManager = new Mock <IContextManager>();

            mockCommandErrorStrategy = new Mock <IErrorStrategy>();
            mockCommandQueueStrategy = new Mock <IQueueStrategy>();
            mockCommandServiceBus    = new Mock <IServiceBus>();

            mockEventErrorStrategy = new Mock <IErrorStrategy>();
            mockEventQueueStrategy = new Mock <IQueueStrategy>();
            mockEventServiceBus    = new Mock <IServiceBus>();

            mockServiceBusFactory = new Mock <IServiceBusFactory>();
            mockServiceBusFactory.Setup(p => p.CreateServiceBus(It.IsAny <MassTransitConnectionDescriptor>(), mockCommandQueueStrategy.Object, It.IsAny <IReadOnlyList <Action <SubscriptionBusServiceConfigurator> > >())).Returns(mockCommandServiceBus.Object);
            mockServiceBusFactory.Setup(p => p.CreateServiceBus(It.IsAny <MassTransitConnectionDescriptor>(), mockEventQueueStrategy.Object, It.IsAny <IReadOnlyList <Action <SubscriptionBusServiceConfigurator> > >())).Returns(mockEventServiceBus.Object);

            mockCommandQueueStrategy.Setup(p => p.GetQueueName()).Returns(commandQueueName);
            mockEventQueueStrategy.Setup(p => p.GetQueueName()).Returns(eventQueueName);

            options = new MassTransitOptions
            {
                LoggerFactory        = mockLoggerFactory.Object,
                CommandErrorStrategy = mockCommandErrorStrategy.Object,
                CommandQueueStrategy = mockCommandQueueStrategy.Object,
                EventErrorStrategy   = mockEventErrorStrategy.Object,
                EventQueueStrategy   = mockEventQueueStrategy.Object,
                ServiceBusFactory    = mockServiceBusFactory.Object,
                ContextManager       = mockContextManager.Object
            };

            var host     = fixture.Create <Uri>();
            var userName = fixture.Create <string>();
            var password = fixture.Create <string>();

            connectionDescriptor = new MassTransitConnectionDescriptor(host, userName, password);
        }
예제 #9
0
        public void MassTransitConnectionDescriptor_can_be_parsed_from_configuration_file()
        {
            var descriptor = MassTransitConnectionDescriptor.FromConfiguration("Test");

            Assert.That(descriptor, Is.Not.Null);
        }
 public static string ToConnectionString(this MassTransitConnectionDescriptor connectionDescriptor)
 {
     return($"host={connectionDescriptor.Host};username={connectionDescriptor.UserName};password={connectionDescriptor.Password}");
 }