예제 #1
0
        public async Task <IActionResult> PostReport(ReportDto reportDto)
        {
            Guid ID = Guid.NewGuid();

            reportDto.ID          = ID;
            reportDto.CreatedDate = DateTime.Now;
            reportDto.Location    = reportDto.Location;
            reportDto.ReportName  = reportDto.ReportName;

            _reportService.ReportPost(reportDto);


            //Ürün karşılanır.
            //Gerekli ön çalışmalar yapılır.

            var bus       = BusConfigurator.ConfigureBus();
            var sendToUri = new Uri($"{RabbitMqConstants.RabbitMqUri}/{RabbitMqConstants.RegistrationServiceQueue}");
            var endPoint  = await bus.GetSendEndpoint(sendToUri);

            await endPoint.Send <IReportRegistrationCommand>(reportDto);

            string message = "Rapor talebiniz başarılı bir şekilde tarafımıza ulaşmıştır. ";

            return(Ok(message));
        }
예제 #2
0
        static void Main(string[] args)
        {
            Console.Title = "WriteSide";

            string connectionString = new AppSettings("appsettings.json").GetConnectionString("DefaultConnection");

            BaseCommandHandler.EventRepository = RepositoryFactory.GetArticlesEventRepository(connectionString);

            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(host, RabbitMqConstants.ArticleWriteServiceQueue, e =>
                {
                    e.Consumer <ApproveArticleCommandHandler>();
                    e.Consumer <DeleteArticleCommandHandler>();
                    e.Consumer <DeleteCategoryCommandHandler>();
                    e.Consumer <DeleteCommentCommandHandler>();
                    e.Consumer <IncrementArticleViewCountCommandHandler>();
                    e.Consumer <InsertArticleCommandHandler>();
                    e.Consumer <InsertCategoryCommandHandler>();
                    e.Consumer <InsertCommentCommandHandler>();
                    e.Consumer <RateArticleCommandHandler>();
                    e.Consumer <UpdateArticleCommandHandler>();
                    e.Consumer <UpdateCategoryCommandHandler>();
                    e.Consumer <UpdateCommentCommandHandler>();

                    e.Consumer <CancelCommandHandler>();
                });
            });

            bus.Start();
            Console.WriteLine("Articles.WriteSide.Service");
            Console.ReadLine();
            bus.Stop();
        }
예제 #3
0
        static void Main(string[] args)
        {
            Console.Title = "OrderService";


            var bus = BusConfigurator
                      .ConfigureBus((cfg) =>
            {
                cfg.ReceiveEndpoint(RabbitMqConsts.OrderStatusServiceQueue, e =>
                {
                    e.Consumer <UpdateOrderStatusCommandConsumer>();
                    e.UseCircuitBreaker(cb =>
                    {
                        cb.TrackingPeriod  = TimeSpan.FromMinutes(1);     //reset interval süresinden(5dk) sonra 1 dk bekle bu sürede yine hata alınırsa diğer kuralları beklemeden yine 5dk bekle
                        cb.TripThreshold   = 15;                          //alınan taleplerin yüzde 15 inde 5 dk bekle
                        cb.ActiveThreshold = 10;                          //10 hata alındığında 5 dk bekle
                        cb.ResetInterval   = TimeSpan.FromMinutes(5);     //5 dk bekletir
                    });
                });
            });

            bus.Start();

            Console.WriteLine("Listening order status command..");
            Console.ReadLine();
        }
예제 #4
0
        private IContainer ConfigureContainer(HttpConfiguration config)
        {
            var builder = new ContainerBuilder();

            builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

            builder.Register(c => BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.UseSerilog();

                cfg.ReceiveEndpoint(
                    host,
                    "validation_data",
                    endpointConfigurator =>
                {
                    endpointConfigurator.Consumer(() => new ValidationServiceConsumer());
                });
            }))
            .As <IBus>()
            .As <IBusControl>()
            .As <ISendEndpointProvider>()
            .SingleInstance();


            var container = builder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
            return(container);
        }
예제 #5
0
        private static void Main(string[] args)
        {
            // Configure Bus
            var bus = BusConfigurator.ConfigureBus(MonitoredServices.NotMonitored, (cfg, host) =>
            {
                cfg.ReceiveEndpoint(BusConstants.RepositoryTestPackageDownloadedEventQueue, ec => { ec.Consumer(() => new MyConsumer()); });

                cfg.ReceiveEndpoint(BusConstants.AssetManagerAssetReadyEventQueue, ec => { ec.Consumer(() => new MyConsumer()); });
            });

            bus.Start();

            var packageId = string.Empty;

            while (packageId?.ToLowerInvariant() != "quit")
            {
                DownloadReceivedEvent   = new ManualResetEvent(false);
                AssetReadyReceivedEvent = new ManualResetEvent(false);

                Console.WriteLine("Geben Sie eine AIP@DossierId Kennung ein, oder quit um das Programm zu beenden:");
                packageId = Console.ReadLine();
                Console.WriteLine("Geben D für DownlaodPackage oder A für AppendPackage an:");
                var messageType = Console.ReadLine();

                if (messageType == "D")
                {
                    DownloadPackage(bus, packageId);
                }
                else
                {
                    AppendPackage(bus, packageId);
                }
            }
        }
예제 #6
0
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            var bus     = BusConfigurator.ConfigureBus();
            var address = new Uri($"{RabbitMqConstants.RabbitMqUri}{RabbitMqConstants.NotificationServiceQueue}");
            var timeout = TimeSpan.FromSeconds(10);

            var requestClient = bus.CreateRequestClient <IRequestMessage>(
                address);

            bus.Start();

            Console.WriteLine("The message has been sent");

            var result = await requestClient.GetResponse <IResponseMessage>(new RequestMessage
            {
                Id      = 1,
                Content = "hello f****r"
            });

            Console.WriteLine(result.Message.Content);

            Console.ReadKey();

            //var client = new MessageRequestClient<RequestMessage, ResponseMessage>(bus,
            //    address, timeout, timeout);
        }
예제 #7
0
        static void Main(string[] args)
        {
            Console.Title = "Saga";

            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(host, RabbitMqConstants.ArticleSagaQueue, e =>
                {
                    e.StateMachineSaga(new ApproveArticleSaga(), new InMemorySagaRepository <ApproveArticleSagaState>());
                    e.StateMachineSaga(new DeleteArticleSaga(), new InMemorySagaRepository <DeleteArticleSagaState>());
                    e.StateMachineSaga(new DeleteCategorySaga(), new InMemorySagaRepository <DeleteCategorySagaState>());
                    e.StateMachineSaga(new DeleteCommentSaga(), new InMemorySagaRepository <DeleteCommentSagaState>());
                    e.StateMachineSaga(new InsertArticleSaga(), new InMemorySagaRepository <InsertArticleSagaState>());
                    e.StateMachineSaga(new InsertCommentSaga(), new InMemorySagaRepository <InsertCommentSagaState>());
                    e.StateMachineSaga(new RateArticleSaga(), new InMemorySagaRepository <RateArticleSagaState>());
                    e.StateMachineSaga(new UpdateArticleSaga(), new InMemorySagaRepository <UpdateArticleSagaState>());
                    e.StateMachineSaga(new UpdateCategorySaga(), new InMemorySagaRepository <UpdateCategorySagaState>());
                    e.StateMachineSaga(new UpdateCommentSaga(), new InMemorySagaRepository <UpdateCommentSagaState>());
                });
            });

            bus.Start();
            Console.WriteLine("Saga active.. Press enter to exit");
            Console.ReadLine();
            bus.Stop();
        }
예제 #8
0
        public void Start()
        {
            LogConfigurator.ConfigureForService();

            Log.Information("Viaduc service is starting");

            var containerBuilder = ContainerConfigurator.Configure();

            BusConfigurator.ConfigureBus(containerBuilder, MonitoredServices.ViaducService, (cfg, ctx) =>
            {
                cfg.ReceiveEndpoint(BusConstants.ReadUserInformationQueue,
                                    ec => { ec.Consumer(ctx.Resolve <ReadUserInformationConsumer>); }
                                    );
                cfg.ReceiveEndpoint(BusConstants.ReadStammdatenQueue,
                                    ec => { ec.Consumer(ctx.Resolve <ReadStammdatenConsumer>); }
                                    );
            });

            var container = containerBuilder.Build();

            bus = container.Resolve <IBusControl>();
            bus.Start();

            Log.Information("Viaduc service started");
        }
예제 #9
0
        private static void RegisterBus(ContainerBuilder builder)
        {
            var helper = new ParameterBusHelper();

            BusConfigurator.ConfigureBus(builder, MonitoredServices.VecteurService,
                                         (cfg, ctx) => { helper.SubscribeAllSettingsInAssembly(Assembly.GetExecutingAssembly(), cfg); });
        }
예제 #10
0
        public async Task <IActionResult> Get()
        {
            StringBuilder responseMessageBuilder = new StringBuilder();

            responseMessageBuilder.AppendLine("Gift Raffle is starting ! ");
            responseMessageBuilder.AppendLine("Here is lucky employees; ");

            var bus = BusConfigurator.ConfigureBus();

            var sendToUri = new Uri($"{RabbitMQConstants.RabbitMqUri}{RabbitMQConstants.RabbitMqGiftRaffleQueueName}");
            var endPoint  = await bus.GetSendEndpoint(sendToUri);

            const int LUCKY_EMPLOYEE_COUNT = 10000; //10k

            for (int i = 0; i < LUCKY_EMPLOYEE_COUNT; i++)
            {
                var luckyEmployee = _fakeDataService.GetFakeFullName();

                await endPoint.Send <IEmployee>(new
                {
                    Name        = luckyEmployee,
                    PhoneNumber = _fakeDataService.GetPhoneNumber(), // Due to fakedata lib does not any relation between name and number.
                    Email       = _fakeDataService.GetEmailAddressByEmployeeName(luckyEmployee)
                });

                responseMessageBuilder.AppendLine($"{i+1}- {luckyEmployee}");
            }

            responseMessageBuilder.AppendLine("*************");
            responseMessageBuilder.AppendLine("Email and SMS sent for them !");

            return(Ok(responseMessageBuilder.ToString()));
        }
예제 #11
0
        static void Main(string[] args)
        {
            Console.Title = "Registration";

            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(
                    RabbitMqConsts.RegisterDemandServiceQueue, e =>
                {
                    e.Consumer <RegisterDemandCommandConsumer>();
                    e.UseCircuitBreaker(cb =>
                    {
                        cb.TrackingPeriod  = TimeSpan.FromMinutes(1);
                        cb.TripThreshold   = 15;
                        cb.ActiveThreshold = 10;
                        cb.ResetInterval   = TimeSpan.FromMinutes(5);
                    });
                });
            });

            bus.StartAsync();

            Console.WriteLine("Listening for Register Demand commands.. " +
                              "Press enter to exit");
            Console.ReadLine();

            bus.StopAsync();
        }
예제 #12
0
파일: Program.cs 프로젝트: dovanduy/Licenta
        static void Main(string[] args)
        {
            Console.Title = "Inventory";

            IUnityContainer container = CreateContainer();

            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(host, RabbitMqConstants.InventoryServiceQueue,
                                    e =>
                {
                    e.UseRetry(retryCfg => { retryCfg.Immediate(5); });
                    e.Consumer <ProductUpdatedEventConsumer>(container);
                });
            });

            bus.ConnectConsumeObserver(new ConsumeObserver());
            bus.ConnectPublishObserver(new PublishObserver());

            bus.Start();

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Inventory service started listening... Press [ENTER] to exit");
            Console.ForegroundColor = ConsoleColor.Gray;

            Console.ReadLine();

            bus.Stop();
        }
예제 #13
0
        static void Main(string[] args)
        {
            Console.Title = "Consumer";

            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(RabbitMqConsts.ExampleQueueName, e =>
                {
                    e.Consumer <IExampleCommandConsumer>();
                    e.UseCircuitBreaker(cb =>
                    {
                        cb.TrackingPeriod  = TimeSpan.FromMinutes(1);
                        cb.TripThreshold   = 15;
                        cb.ActiveThreshold = 10;
                        cb.ResetInterval   = TimeSpan.FromMinutes(5);
                    });
                });
            });

            bus.StartAsync();

            Console.WriteLine("Queue eritilmek için dinlenmekte. " + "Çıkmak için enter tuşuna basınız");

            Console.ReadLine();

            bus.StopAsync();
        }
예제 #14
0
        private void StartBus()
        {
            var helper           = new ParameterBusHelper();
            var containerBuilder = new ContainerBuilder();

            BusConfigurator.ConfigureBus(containerBuilder, MonitoredServices.CacheService, (cfg, ctx) =>
            {
                cfg.ReceiveEndpoint(BusConstants.CacheDoesExistRequestQueue,
                                    ec => { ec.Consumer(() => new DoesExistInCacheRequestConsumer()); });

                cfg.ReceiveEndpoint(BusConstants.CacheConnectionInfoRequestQueue,
                                    ec => { ec.Consumer(() => new CacheConnectionInfoRequestConsumer()); });

                cfg.ReceiveEndpoint(BusConstants.CacheDeleteFile, ec =>
                {
                    ec.Consumer(() => new DeleteFileFromCacheConsumer());
                    ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy);
                });

                helper.SubscribeAllSettingsInAssembly(Assembly.GetExecutingAssembly(), cfg);
            });

            var container = containerBuilder.Build();

            Bus = container.Resolve <IBusControl>();
            Bus.Start();
        }
예제 #15
0
        static void Main(string[] args)
        {
            try
            {
                //Set RabbitMQ properties
                RabbitMqConfiguration.RabbitMqUri       = "rabbitmq://localhost";
                RabbitMqConfiguration.VirtualHost       = "uservh";
                RabbitMqConfiguration.UserName          = "******";
                RabbitMqConfiguration.Password          = "******";
                RabbitMqConfiguration.OAuthServiceQueue = "oauth.service";
                RabbitMqConfiguration.Timeout           = TimeSpan.FromSeconds(10);


                var bus = BusConfigurator.ConfigureBus((cfg, host) =>
                {
                    cfg.ReceiveEndpoint(host, RabbitMqConfiguration.OAuthServiceQueue, e =>
                    {
                        //This consumer is fired when a request is sent from CreateUser method in UserController
                        e.Consumer <CreateUserCommandConsumer>();
                    });
                });

                TaskUtil.Await(() => bus.StartAsync());

                Console.WriteLine("Receiver started ...");
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(
                    RabbitMqConsts.StudentRegisterServiceQueue, e =>
                {
                    //Message yakalanýnca iþlem yapýcak consumer yazýlýr
                    e.Consumer <ConsumerStudent>();
                    e.UseCircuitBreaker(cb =>
                    {
                        //TripThreshold ile alýnan taleplerimizin %15'inde ve ActiveThreshold ile üst üste 10 hata alýndðýnda 5 dk beklemesi gerektiðini ResetInterval ile belirtiyoruz. TrackingPeriod ise ResetInterval süresinden sonra 1 dk daha tetikte beklemesi söylüyor. Bu sürede yine hata alýnýr ise ActiveThreshold ve TripThreshold limitlerini beklemeden yine 5 dk süre ile beklemeye geçecektir.

                        cb.TrackingPeriod  = TimeSpan.FromMinutes(1);
                        cb.TripThreshold   = 15;
                        cb.ActiveThreshold = 10;
                        cb.ResetInterval   = TimeSpan.FromMinutes(5);
                    });
                    // RateLimit middlewere ile belirli süre içersinde iþlenecek mesaj adeti verebiliyoruz. Servise 1 dk içerisnde 1000 request yapabileceðimizi söyledik
                    //e.UseRateLimit(1000, TimeSpan.FromMinutes(1));
                });
            });

            while (!stoppingToken.IsCancellationRequested)
            {
                await bus.StartAsync();
            }
            await bus.StopAsync();
        }
예제 #17
0
        static void Main(string[] args)
        {
            Console.Title = "Approver";

            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(
                    RabbitMQConstants.RabbitMqGiftRaffleQueueName, e =>
                {
                    e.Consumer <ApproverFinderConsumer>();
                    e.UseCircuitBreaker(cb =>
                    {
                        cb.TrackingPeriod  = TimeSpan.FromMinutes(1);
                        cb.TripThreshold   = 15;
                        cb.ActiveThreshold = 10;
                        cb.ResetInterval   = TimeSpan.FromMinutes(5);
                    });
                });
            });

            bus.StartAsync();

            Console.WriteLine("Listening for Approvals ");
            Console.ReadLine();

            bus.StopAsync();
        }
        public void Start()
        {
            LogInformation("Notification service is starting");
            // Configure Bus
            bus = BusConfigurator.ConfigureBus(MonitoredServices.NotificationService, (cfg, host) =>
            {
                cfg.ReceiveEndpoint(BusConstants.NotificationManagerMessageQueue, ec =>
                {
                    ec.Consumer(() => kernel.Get <EmailMessageConsumer>());
                    ec.UseRetry(retryPolicy =>
                                retryPolicy.Exponential(10, TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5)));
                });

                cfg.UseSerilog();
            });

            // Add the bus instance to the IoC container
            kernel.Bind <IBus>().ToMethod(context => bus).InSingletonScope();
            kernel.Bind <IBusControl>().ToMethod(context => bus).InSingletonScope();
            bus.Start();

            PublishStartupTestMailIfNeccessary();

            LogInformation("Notification service started");
        }
예제 #19
0
        private static void ConfigureServices(IServiceCollection serviceCollection)
        {
            //add logging
            serviceCollection.AddSingleton(new LoggerFactory().AddConsole());
            serviceCollection.AddLogging();

            //add services
            serviceCollection.AddTransient <IAppService, AppService>();

            //MassTransit
            var serviceBusSettings = new ServiceBusSettings
            {
                ServiceBusConnectionString = "",
                ServiceBusKeyName          = "",
                ServiceBusSharedAccessKey  = ""
            };

            serviceCollection.AddSingleton(provider => BusConfigurator.ConfigureBus(serviceBusSettings));
            serviceCollection.AddSingleton <ISendEndpointProvider>(provider => provider.GetRequiredService <IBusControl>());
            serviceCollection.AddSingleton <IPublishEndpoint>(provider => provider.GetRequiredService <IBusControl>());
            serviceCollection.AddSingleton <IBus>(provider => provider.GetRequiredService <IBusControl>());


            //add Services
            serviceCollection.AddSingleton <IMassTransitService, MassTransitService>();
            serviceCollection.AddTransient <IMessageSender, MessageSender>();
        }
예제 #20
0
 static BusHelper()
 {
     ParameterBus = BusConfigurator.ConfigureBus((cfg, host) =>
     {
     });
     ParameterBus.Start();
 }
        public OrderStatusController()
        {
            var busControl = BusConfigurator.ConfigureBus();
            var sendToUri  = new Uri($"{RabbitMqConsts.RabbitMqUri}{RabbitMqConsts.OrderStatusServiceQueue}");

            _bus = busControl.GetSendEndpoint(sendToUri).Result;
        }
예제 #22
0
        private static void Main(string[] args)
        {
            // Configure Bus
            var bus = BusConfigurator.ConfigureBus(MonitoredServices.NotMonitored, (cfg, host) => { });

            bus.Start();

            var archiveRecordId = 30409399;

            // Sending a testevent
            var ep = bus.GetSendEndpoint(new Uri(bus.Address, BusConstants.DigitalisierungsAuftragErledigtEvent)).GetAwaiter().GetResult();

            ep.Send <IDigitalisierungsAuftragErledigt>(new
            {
                ArchiveRecordId           = archiveRecordId,
                OrderItemId               = 100,
                OrderDate                 = DateTime.Now,
                OrderUserId               = "S51943653", // UserId Jörg
                OrderUserRolePublicClient = "Oe3"
            }).Wait();

            // Wait until the obove message has been consumed
            Thread.Sleep(10000);

            // Now send a sync command, to initiate the second cyncle of the test
            ep = bus.GetSendEndpoint(new Uri(bus.Address, BusConstants.HarvestManagerSyncArchiveRecordMessageQueue)).GetAwaiter().GetResult();
            ep.Send <ISyncArchiveRecord>(new
            {
                MutationId      = -1,
                ArchiveRecordId = archiveRecordId,
                Action          = "Update"
            }).Wait();
        }
예제 #23
0
        public bool Start(HostControl hostControl)
        {
            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(host, RabbitMqConstants.RegisterOrderServiceQueue, e =>
                {
                    cfg.UseNLog(new LogFactory());

                    e.UseRateLimit(1, TimeSpan.FromSeconds(30));

                    e.UseRetry(Retry.Interval(5, TimeSpan.FromSeconds(5)));

                    e.UseCircuitBreaker(cb =>
                    {
                        cb.TripThreshold = 15;
                        cb.ResetInterval(TimeSpan.FromMinutes(5));
                        cb.TrackingPeriod  = TimeSpan.FromMinutes(1);
                        cb.ActiveThreshold = 10;
                    });

                    e.Consumer <OrderRegisteredConsumer>();
                });
            });

            var consumeObserver = new LogConsumeObserver();

            bus.ConnectConsumeObserver(consumeObserver);

            _busHandle = bus.Start();

            return(true);
        }
예제 #24
0
        public async Task TestMethod()
        {
            UserViewModel model =
                new UserViewModel
            {
                FirstName = "Jan",
                LastName  = "Kowalski",
                Address   = "Street 23",
                Age       = 23,
                IdNumber  = 232323
            };

            var bus = BusConfigurator.ConfigureBus();

            var sendToUri = new Uri($"{Constants.RabbitMqUri}" + $"{Constants.RegisterUserServiceQueue}");
            var endPoint  = await bus.GetSendEndpoint(sendToUri);


            // no need to have a class implementing interface ( as we needed one during the implementation for rabbitmq
            await endPoint.Send <IRegisterUserCommand>(
                new
            {
                FirstName = model.FirstName,
                LastName  = model.LastName,
                Address   = model.Address,
                Age       = model.Age,
                IdNumber  = model.IdNumber
            });
        }
        static void Main(string[] args)
        {
            Console.Title = "Enrollment service";

            var builder = new ConfigurationBuilder();


            IConfigurationRoot configuration = builder.Build();
            var connectionString             = configuration.GetConnectionString("Default");
            var serviceProvider = new ServiceCollection()
                                  .AddDbContext <OnlineCoursesContext>(options =>
            {
                options.UseSqlServer(connectionString);
            })
                                  .AddTransient <IDomainEventContext, OnlineCoursesContext>()
                                  .AddTransient <IRepository <Course>, SqlRepository <Course, Guid> >()
                                  .BuildServiceProvider();

            var bus = BusConfigurator.ConfigureBus((cfg, host) =>
            {
                cfg.ReceiveEndpoint(host, RabbitMqConstants.EnrollStudentServiceQueue, e =>
                {
                    e.Consumer <EnrollStudentCommandConsumer>();
                });
            });

            bus.Start();

            Console.WriteLine("Listening for commands.. Press enter to exit");
            Console.ReadLine();

            bus.Stop();
        }
        public void Start()
        {
            Log.Information($"{serviceName} is starting");
            BusConfigurator.ConfigureBus(containerBuilder, MonitoredServices.DocumentConverterService, (cfg, ctx) =>
            {
                cfg.ReceiveEndpoint(BusConstants.DocumentConverterJobInitRequestQueue, ec =>
                {
                    ec.Consumer(ctx.Resolve <JobInitConsumer>);
                    ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy);
                });

                cfg.ReceiveEndpoint(BusConstants.DocumentConverterConversionStartRequestQueue, ec =>
                {
                    ec.Consumer(ctx.Resolve <ConversionStartConsumer>);
                    ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy);
                    BusConfigurator.SetPrefetchCountForEndpoint(ec);
                });

                cfg.ReceiveEndpoint(BusConstants.DocumentConverterExtractionStartRequestQueue, ec =>
                {
                    ec.Consumer(ctx.Resolve <ExtractionStartConsumer>);
                    ec.UseRetry(BusConfigurator.ConfigureDefaultRetryPolicy);
                    BusConfigurator.SetPrefetchCountForEndpoint(ec);
                });

                cfg.ReceiveEndpoint(BusConstants.DocumentConverterSupportedFileTypesRequestQueue, ec =>
                {
                    ec.Consumer(ctx.Resolve <SupportedFileTypesConsumer>);
                    ec.UseRetry(retry => retry.Incremental(3, TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(0)));
                });

                cfg.ReceiveEndpoint(BusConstants.MonitoringDocumentConverterInfoQueue, ec =>
                {
                    ec.Consumer(ctx.Resolve <DocumentConverterInfoConsumer>);
                    ec.PrefetchCount = 4;
                });

                cfg.ReceiveEndpoint(BusConstants.MonitoringAbbyyOcrTestQueue, ec =>
                {
                    ec.Consumer(ctx.Resolve <AbbyyOcrTestConsumer>);
                    // Do not allow more than 4 concurrent Abbyy calls
                    ec.PrefetchCount = 4;
                });
            });

            container = containerBuilder.Build();
            bus       = container.Resolve <IBusControl>();
            bus.Start();

            // Send event that document converter service is started
            // Push an error message to indicate that the item has failed
            bus.Publish <DocumentConverterServiceStartedEvent>(new
            {
                __TimeToLive = TimeSpan.FromSeconds(30),
                StartTime    = DateTime.Now
            });

            Log.Information($"{serviceName} started");
        }
        private void StartBus()
        {
            var helper = new ParameterBusHelper();

            Bus = BusConfigurator.ConfigureBus(MonitoredServices.VecteurService,
                                               (cfg, host) => { helper.SubscribeAllSettingsInAssembly(Assembly.GetExecutingAssembly(), cfg, host); });
            Bus.Start();
        }
예제 #28
0
        public void Start()
        {
            BusConfigurator.ConfigureBus(builder, MonitoredServices.MonitoringService);
            var container = builder.Build();

            bus = container.Resolve <IBusControl>();
            bus.Start();
        }
        public async Task <ISendEndpoint> GetEndPoint()
        {
            IBusControl   bus       = BusConfigurator.ConfigureBus();
            Uri           sendToUri = new Uri($"{RabbitMqConstants.RabbitMqUri}" + $"{RabbitMqConstants.ArticleSagaQueue}");
            ISendEndpoint endPoint  = await bus.GetSendEndpoint(sendToUri);

            return(endPoint);
        }
        public PublisherStudent()
        {
            logger.Info("PublisherStudent dependency injection");
            var bus       = BusConfigurator.ConfigureBus();
            var sendToUri = new Uri($"{RabbitMqConsts.RabbitMqUri}{RabbitMqConsts.StudentRegisterServiceQueue}");

            endPoint = bus.GetSendEndpoint(sendToUri).Result;
        }