public IBusControl CreateServiceBus(MassTransitOptions options, IReadOnlyList<Action<IReceiveEndpointConfigurator>> commandSubscriptions, IReadOnlyList<Action<IReceiveEndpointConfigurator>> eventSubscriptions)
        {
            return Bus.Factory.CreateUsingInMemory(cfg =>
            {
                cfg.UseJsonSerializer();
                cfg.UseConcurrencyLimit(options.ConcurrencyLimit);

                if (commandSubscriptions.Any())
                {
                    cfg.ReceiveEndpoint(options.CommandQueueNameStrategy.GetQueueName(), endpoint =>
                    {
                        endpoint.UseRetry(options.CommandErrorPolicy);

                        foreach (var subscription in commandSubscriptions)
                            subscription(endpoint);
                    });
                }

                if (eventSubscriptions.Any())
                {
                    cfg.ReceiveEndpoint(options.EventQueueNameStrategy.GetQueueName(), endpoint =>
                    {
                        endpoint.UseRetry(options.EventErrorPolicy);

                        foreach (var subscription in eventSubscriptions)
                            subscription(endpoint);
                    });
                }
            });
        }
Пример #2
0
 public MassTransitBusEngine(MassTransitConnectionDescriptor connectionDescriptor, MassTransitOptions options)
 {
     if (connectionDescriptor == null)
     {
         throw new ArgumentNullException(nameof(connectionDescriptor));
     }
     if (options == null)
     {
         throw new ArgumentNullException(nameof(options));
     }
     _connectionDescriptor = connectionDescriptor;
     _options = options;
     _logger  = _options.LoggerFactory.CreateLogger(nameof(MassTransitBusEngine));
 }
        public MassTransitBusEngine(IServiceBusFactory serviceBusFactory, MassTransitOptions options)
        {
            if (serviceBusFactory == null)
            {
                throw new ArgumentNullException(nameof(serviceBusFactory));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            _serviceBusFactory = serviceBusFactory;
            _options           = options;

            _logger = options.LoggerFactory.CreateLogger(nameof(MassTransitBusEngine));
        }
        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);
        }
        public IBusControl CreateServiceBus(MassTransitOptions options, IReadOnlyList<Action<IReceiveEndpointConfigurator>> commandSubscriptions, IReadOnlyList<Action<IReceiveEndpointConfigurator>> eventSubscriptions)
        {
            var bus = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                var host = cfg.Host(_connectionDescriptor.Host, h =>
                {
                    h.Username(_connectionDescriptor.UserName);
                    h.Password(_connectionDescriptor.Password);
                });

                cfg.UseJsonSerializer();
                cfg.UseConcurrencyLimit(options.ConcurrencyLimit);

                if (commandSubscriptions.Any())
                {
                    cfg.ReceiveEndpoint(host, options.CommandQueueNameStrategy.GetQueueName(), endpoint =>
                    {
                        endpoint.UseRetry(options.CommandErrorPolicy);
                        _rabbitMqOptions.CommandQueuePolicy.ApplyPolicy(endpoint);

                        foreach (var subscription in commandSubscriptions)
                            subscription(endpoint);
                    });
                }

                if (eventSubscriptions.Any())
                {
                    cfg.ReceiveEndpoint(host, options.EventQueueNameStrategy.GetQueueName(), endpoint =>
                    {
                        endpoint.UseRetry(options.EventErrorPolicy);
                        _rabbitMqOptions.EventQueuePolicy.ApplyPolicy(endpoint);

                        foreach (var subscription in eventSubscriptions)
                            subscription(endpoint);
                    });
                }

            });

            return bus;
        }
Пример #6
0
        private void ConfigureMassTransitOptions(MassTransitOptions options)
        {
            options.CommandQueueStrategy = new TemporaryQueueStrategy();

            options.EventQueueStrategy = new TemporaryQueueStrategy();
        }