Ejemplo n.º 1
0
        public override bool OnStart()
        {
            try
            {
                // Register the dependency resolver for initializing handlers and service
                // classes.
                var resolver = CarWorkerHostDependencyResolver.CreateAsync().Result;
                DependencyResolverFactory.Register(
                    resolver
                    );

                // Set up the process defaults for connections to optimize storage performance
                ServicePointManager.DefaultConnectionLimit = int.MaxValue;

                var configuration = DispatcherConfiguration.GetCurrentConfiguration();

                var typesToSearchForHandlers = typeof(UpdateLocationHandler)
                                               .Assembly
                                               .DefinedTypes;

                _coordinator = ProcessingCoordinator.CreateAsync(
                    RoleEnvironment.CurrentRoleInstance.Id,
                    configuration.EventHubName,
                    configuration.ConsumerGroupName,
                    configuration.EventHubConnectionString,
                    configuration.CheckpointStorageAccount,
                    configuration.MaxBatchSize,
                    configuration.PrefetchCount,
                    configuration.ReceiveTimeout,
                    configuration.MaxConcurrencyPerProcessor,
                    typesToSearchForHandlers,
                    (name, partitionId) =>
                    new CircuitBreaker(
                        name,
                        partitionId,
                        configuration.CircuitBreakerWarningLevel,
                        configuration.CircuitBreakerTripLevel,
                        configuration.CircuitBreakerStallInterval,
                        configuration.CircuitBreakerLogCooldownInterval),
                    new DispatcherInstrumentationManager(instrumentationEnabled: true).CreatePublisher("WaWorkerHost")).Result;

                bool result = base.OnStart();

                return(result);
            }
            catch (Exception ex)
            {
                // Hard error on startup, usually configuration or security related
                // Ensure that we log this error, including a direct post to the local
                // event log
                LogHelpers.HandleRoleException(Logger, "OnStart()", ex);
                throw;
            }
        }
Ejemplo n.º 2
0
        private static async Task RunAsync(CancellationToken token)
        {
            var configuration = DispatcherConfiguration.GetCurrentConfiguration();

            // Configure dependency resolver (including poison handler)
            var resolver = await ConsoleHostDependencyResolver.CreateAsync();

            DependencyResolverFactory.Register(
                resolver
                );

            Console.WriteLine("Initializing coordinator");

            var messageProcessor = await ProcessingCoordinator.CreateAsync(
                "Console",
                configuration.EventHubName,
                configuration.ConsumerGroupName,
                configuration.EventHubConnectionString,
                configuration.CheckpointStorageAccount,
                configuration.MaxBatchSize,
                configuration.PrefetchCount,
                configuration.ReceiveTimeout,
                configuration.MaxConcurrencyPerProcessor,
                typeof(UpdateLocationHandler).Assembly.DefinedTypes,
                (name, partitionId) =>
                new CircuitBreaker(
                    name,
                    partitionId,
                    configuration.CircuitBreakerWarningLevel,
                    configuration.CircuitBreakerTripLevel,
                    configuration.CircuitBreakerStallInterval,
                    configuration.CircuitBreakerLogCooldownInterval),
                new DispatcherInstrumentationManager(true, true).CreatePublisher("console"));

            Console.WriteLine("Running processor");

            try
            {
                await Task.Delay(Timeout.InfiniteTimeSpan, token);
            }
            catch (TaskCanceledException) { /* expected cancellation */ }

            messageProcessor.Dispose();
        }