public Task <JobHostContext> CreateAndLogHostStartedAsync(CancellationToken shutdownToken,
                                                           CancellationToken cancellationToken)
 {
     return(JobHostContextFactory.CreateAndLogHostStartedAsync(StorageAccountProvider,
                                                               FunctionIndexProvider, BindingProvider, HostIdProvider, HostInstanceLoggerProvider,
                                                               FunctionInstanceLoggerProvider, FunctionOutputLoggerProvider, QueueConfiguration,
                                                               BackgroundExceptionDispatcher, ConsoleProvider, shutdownToken, cancellationToken));
 }
Ejemplo n.º 2
0
        public Task <JobHostContext> CreateAndLogHostStartedAsync(CancellationToken shutdownToken,
                                                                  CancellationToken cancellationToken)
        {
            IBindingProvider bindingProvider = null;

            return(JobHostContextFactory.CreateAndLogHostStartedAsync(StorageAccountProvider, FunctionIndexProvider,
                                                                      bindingProvider, new FixedHostIdProvider(Guid.NewGuid().ToString("N")),
                                                                      new NullHostInstanceLoggerProvider(), new NullFunctionInstanceLoggerProvider(),
                                                                      new NullFunctionOutputLoggerProvider(), Queues, BackgroundExceptionDispatcher.Instance,
                                                                      new NullConsoleProvider(), shutdownToken, cancellationToken));
        }
Ejemplo n.º 3
0
        public Task <JobHostContext> CreateAndLogHostStartedAsync(JobHost host, CancellationToken shutdownToken, CancellationToken cancellationToken)
        {
            ITypeLocator         typeLocator  = new DefaultTypeLocator(new StringWriter(), new DefaultExtensionRegistry());
            INameResolver        nameResolver = new RandomNameResolver();
            JobHostConfiguration config       = new JobHostConfiguration
            {
                NameResolver = nameResolver,
                TypeLocator  = typeLocator
            };

            return(JobHostContextFactory.CreateAndLogHostStartedAsync(
                       host, StorageAccountProvider, Queues, typeLocator, DefaultJobActivator.Instance, nameResolver,
                       new NullConsoleProvider(), new JobHostConfiguration(), shutdownToken, cancellationToken, new WebJobsExceptionHandler(),
                       functionIndexProvider: FunctionIndexProvider, singletonManager: SingletonManager, hostIdProvider: HostIdProvider));
        }
Ejemplo n.º 4
0
        public Task <JobHostContext> CreateAndLogHostStartedAsync(JobHost host, CancellationToken shutdownToken, CancellationToken cancellationToken)
        {
            INameResolver        nameResolver = new RandomNameResolver();
            JobHostConfiguration config       = new JobHostConfiguration
            {
                NameResolver = nameResolver,
                TypeLocator  = TypeLocator
            };

            return(JobHostContextFactory.CreateAndLogHostStartedAsync(
                       host, StorageAccountProvider, QueueConfiguration, TypeLocator, DefaultJobActivator.Instance, nameResolver,
                       ConsoleProvider, new JobHostConfiguration(), shutdownToken, cancellationToken, BackgroundExceptionDispatcher, HostIdProvider, FunctionExecutor,
                       FunctionIndexProvider, BindingProvider, HostInstanceLoggerProvider, FunctionInstanceLoggerProvider,
                       FunctionOutputLoggerProvider));
        }
        public Task <JobHostContext> CreateAndLogHostStartedAsync(CancellationToken shutdownToken, CancellationToken cancellationToken)
        {
            ITypeLocator         typeLocator  = new DefaultTypeLocator(new StringWriter());
            INameResolver        nameResolver = new RandomNameResolver();
            JobHostConfiguration config       = new JobHostConfiguration
            {
                NameResolver = nameResolver,
                TypeLocator  = typeLocator
            };

            return(JobHostContextFactory.CreateAndLogHostStartedAsync(
                       StorageAccountProvider, Queues, typeLocator, DefaultJobActivator.Instance, nameResolver,
                       new NullConsoleProvider(), new JobHostConfiguration(), shutdownToken, cancellationToken,
                       functionIndexProvider: FunctionIndexProvider));
        }
        public Task <JobHostContext> CreateAndLogHostStartedAsync(CancellationToken shutdownToken, CancellationToken cancellationToken)
        {
            ITypeLocator         typeLocator  = new DefaultTypeLocator(new StringWriter());
            INameResolver        nameResolver = new RandomNameResolver();
            JobHostConfiguration config       = new JobHostConfiguration
            {
                NameResolver = nameResolver,
                TypeLocator  = typeLocator
            };

            return(JobHostContextFactory.CreateAndLogHostStartedAsync(
                       StorageAccountProvider, config.Queues, typeLocator, DefaultJobActivator.Instance, nameResolver,
                       new NullConsoleProvider(), new JobHostConfiguration(), shutdownToken, cancellationToken,
                       new FixedHostIdProvider(Guid.NewGuid().ToString("N")),
                       null, new EmptyFunctionIndexProvider(),
                       null, new NullHostInstanceLoggerProvider(), new NullFunctionInstanceLoggerProvider(), new NullFunctionOutputLoggerProvider()));
        }
        public bool Setup(
            IFunctionIndex functions,
            IListenerFactory functionsListenerFactory,
            out IFunctionExecutor hostCallExecutor,
            out IListener listener,
            out HostOutputMessage hostOutputMessage,
            string hostId,
            CancellationToken shutdownToken)
        {
            string sharedQueueName = HostQueueNames.GetHostQueueName(hostId);
            var    sharedQueue     = sharedQueueName;

            IListenerFactory sharedQueueListenerFactory = new HostMessageListenerFactory(_storageServices, sharedQueue,
                                                                                         _exceptionHandler, _loggerFactory, functions,
                                                                                         _functionInstanceLogger, _functionExecutor);

            Guid             hostInstanceId               = Guid.NewGuid();
            string           instanceQueueName            = HostQueueNames.GetHostQueueName(hostInstanceId.ToString("N"));
            var              instanceQueue                = instanceQueueName;
            IListenerFactory instanceQueueListenerFactory = new HostMessageListenerFactory(_storageServices, instanceQueue,
                                                                                           _exceptionHandler, _loggerFactory, functions,
                                                                                           _functionInstanceLogger, _functionExecutor);

            HeartbeatDescriptor heartbeatDescriptor = new HeartbeatDescriptor
            {
                SharedContainerName = HostContainerNames.Hosts,
                SharedDirectoryName = HostDirectoryNames.Heartbeats + "/" + hostId,
                InstanceBlobName    = hostInstanceId.ToString("N"),
                ExpirationInSeconds = (int)HeartbeatIntervals.ExpirationInterval.TotalSeconds
            };

            var dashboardAccount = _storageAccountOptions.GetDashboardStorageAccount();

            var blob = dashboardAccount.CreateCloudBlobClient()
                       .GetContainerReference(heartbeatDescriptor.SharedContainerName)
                       .GetBlockBlobReference(heartbeatDescriptor.SharedDirectoryName + "/" + heartbeatDescriptor.InstanceBlobName);
            IRecurrentCommand heartbeatCommand = new UpdateHostHeartbeatCommand(new HeartbeatCommand(blob));

            IEnumerable <MethodInfo> indexedMethods = functions.ReadAllMethods();
            Assembly hostAssembly = JobHostContextFactory.GetHostAssembly(indexedMethods);
            string   displayName  = hostAssembly != null?AssemblyNameCache.GetName(hostAssembly).Name : "Unknown";

            hostOutputMessage = new JobHostContextFactory.DataOnlyHostOutputMessage
            {
                HostInstanceId      = hostInstanceId,
                HostDisplayName     = displayName,
                SharedQueueName     = sharedQueueName,
                InstanceQueueName   = instanceQueueName,
                Heartbeat           = heartbeatDescriptor,
                WebJobRunIdentifier = WebJobRunIdentifier.Current
            };

            hostCallExecutor = JobHostContextFactory.CreateHostCallExecutor(instanceQueueListenerFactory, heartbeatCommand,
                                                                            _exceptionHandler, shutdownToken, _functionExecutor);
            IListenerFactory hostListenerFactory = new CompositeListenerFactory(functionsListenerFactory,
                                                                                sharedQueueListenerFactory, instanceQueueListenerFactory);

            listener = JobHostContextFactory.CreateHostListener(hostListenerFactory, _sharedQueueHandler, heartbeatCommand, _exceptionHandler, shutdownToken);

            return(true);
        }