Ejemplo n.º 1
0
        public void Setup()
        {
            _serviceBusNamespace = A.Fake <IServiceBusNamespace>();
            _queueClient         = A.Fake <IQueueClient>();

            var serviceBusNamespaceFactory = A.Fake <IServiceBusNamespaceFactory>();
            var queueClientFactory         = A.Fake <IQueueClientFactory>();

            A.CallTo(() => serviceBusNamespaceFactory.Create())
            .Returns(_serviceBusNamespace);

            A.CallTo(() => queueClientFactory.Create(A <string> .Ignored))
            .Returns(_queueClient);

            _commandQueueClient = new ServiceBusCommandQueueClient(
                new Dictionary <string, Type>()
            {
                { typeof(TestingCommand).Name, typeof(TestingCommand) }
            },
                serviceBusNamespaceFactory,
                queueClientFactory);

            A.CallTo(() => _queueClient.RegisterMessageHandler(
                         A <Func <Message, CancellationToken, Task> > .Ignored,
                         A <MessageHandlerOptions> .Ignored))
            .Invokes((Func <Message, CancellationToken, Task> callback, MessageHandlerOptions options) => _messageHandler = callback);
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

            IConfigurationRoot configuration = builder.Build();

            var serviceBusConfiguration = new ServiceBusConfiguration();
            var section = configuration.GetSection("ServiceBus");

            section.Bind(serviceBusConfiguration);

            var orderQueueClient = new ServiceBusCommandQueueClient(
                new Dictionary <string, Type>(),
                new ServiceBusNamespaceFactory(serviceBusConfiguration),
                new QueueClientFactory(serviceBusConfiguration));

            var rfqQueueClient = new ServiceBusCommandQueueClient(
                new Dictionary <string, Type>(),
                new ServiceBusNamespaceFactory(serviceBusConfiguration),
                new QueueClientFactory(serviceBusConfiguration));

            Dictionary <string, ICommandQueueClient> ccqs = new Dictionary <string, ICommandQueueClient>
            {
                { "order-service", orderQueueClient },
                { "rfq-service", rfqQueueClient }
            };

            MainAsync(ccqs).GetAwaiter().GetResult();
        }
        public async Task Setup()
        {
            _configuration       = new ServiceBusTestConfiguration();
            _serviceBusNamespace = await GetNamespace(_configuration);

            _commandQueueClient = new ServiceBusCommandQueueClient(
                new Dictionary <string, Type>(),
                new ServiceBusNamespaceFactory(_configuration),
                new QueueClientFactory(_configuration));
        }
Ejemplo n.º 4
0
        private void ConfigureServiceBus(IServiceCollection services)
        {
            var serviceBusConfiguration = new ServiceBusConfiguration();

            Configuration.GetSection("ServiceBus").Bind(serviceBusConfiguration);

            services.AddSingleton <IServiceBusConfiguration>(serviceBusConfiguration);
            services.AddSingleton <IServiceBusManagementConfiguration>(serviceBusConfiguration);

            var commandQueueClient = new ServiceBusCommandQueueClient(
                null,
                new ServiceBusNamespaceFactory(serviceBusConfiguration),
                new QueueClientFactory(serviceBusConfiguration));

            services.AddSingleton <ICommandQueueClient>(commandQueueClient);
        }
Ejemplo n.º 5
0
        public void Setup()
        {
            _serviceBusNamespace = A.Fake <IServiceBusNamespace>();
            _queueClient         = A.Fake <IQueueClient>();

            var serviceBusNamespaceFactory = A.Fake <IServiceBusNamespaceFactory>();
            var queueClientFactory         = A.Fake <IQueueClientFactory>();

            A.CallTo(() => serviceBusNamespaceFactory.Create())
            .Returns(_serviceBusNamespace);

            A.CallTo(() => queueClientFactory.Create(A <string> .Ignored))
            .Returns(_queueClient);

            _commandQueueClient = new ServiceBusCommandQueueClient(
                new Dictionary <string, Type>(),
                serviceBusNamespaceFactory,
                queueClientFactory);
        }
Ejemplo n.º 6
0
        public void ConfigureServices(IServiceCollection services)
        {
            // Configuration: ServiceBus
            var serviceBusConfiguration = new ServiceBusConfiguration();

            Configuration.GetSection("ServiceBus").Bind(serviceBusConfiguration);

            services.AddSingleton <IServiceBusConfiguration>(serviceBusConfiguration);
            services.AddSingleton <IServiceBusManagementConfiguration>(serviceBusConfiguration);

            // Configuration: EventStore
            var eventStoreConfiguration = new EventStoreConfiguration();

            Configuration.GetSection("EventStore").Bind(eventStoreConfiguration);
            services.AddSingleton <IEventStoreConfiguration>(eventStoreConfiguration);

            // ServiceBus registration
            var commandQueueClient = new ServiceBusCommandQueueClient(
                CommandTypes,
                new ServiceBusNamespaceFactory(serviceBusConfiguration),
                new QueueClientFactory(serviceBusConfiguration));

            services.AddSingleton <ICommandQueueClient>(commandQueueClient);

            // EventStore registrations
            var eventStoreClient = new EventStoreClient(
                EventTypes,
                new EventStoreConnectionFactory(eventStoreConfiguration));

            services.AddSingleton <IEventStreamingClient>(eventStoreClient);
            services.AddSingleton <IEventPersistenceClient>(eventStoreClient);

            // Register the AggregateWriter as the implementation of both IAggregateWriter and IAggregateReader
            services.AddSingleton <OrderAggregateWriter>();
            services.AddSingleton <IAggregateWriter <Domain.Aggregate.Order> >(i => i.GetService <OrderAggregateWriter>());
            services.AddSingleton <IAggregateReader <Domain.Aggregate.Order> >(i => i.GetService <OrderAggregateWriter>());

            // Retrieve and register all implementations of ISubscriber<>
            GetImplementations(typeof(ISubscriber <ICommand, IEvent>))
            .ForEach(type =>
            {
                services.Add(new ServiceDescriptor(typeof(ISubscriber <ICommand, IEvent>), type, ServiceLifetime.Transient));
            });

            services.AddSingleton <StartupHostedServiceHealthCheck>();
            services.AddSingleton <IHostedService, OrderSubscriber>();

            // ASP.NET addons
            services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
                                  builder => builder
                                  .AllowAnyOrigin()
                                  .AllowAnyMethod()
                                  .AllowAnyHeader()
                                  .AllowCredentials());
            });

            services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info {
                    Title = "Order Management Service API", Version = "v1"
                });
            });

            services.AddHealthChecks()
            .AddCheck("self", () => HealthCheckResult.Healthy())
            .AddCheck <StartupHostedServiceHealthCheck>("OrderSubscriber", tags: new [] { "dependency" });
        }