Exemplo n.º 1
0
        public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context)
        {
            ParameterInfo parameter    = context.Parameter;
            var           queueTrigger = TypeUtility.GetResolvedAttribute <QueueTriggerAttribute>(context.Parameter);

            if (queueTrigger == null)
            {
                return(Task.FromResult <ITriggerBinding>(null));
            }

            string queueName = Resolve(queueTrigger.QueueName);

            queueName = NormalizeAndValidate(queueName);

            ITriggerDataArgumentBinding <QueueMessage> argumentBinding = InnerProvider.TryCreate(parameter);

            if (argumentBinding == null)
            {
                throw new InvalidOperationException(
                          "Can't bind QueueTrigger to type '" + parameter.ParameterType + "'.");
            }

            QueueServiceClient client = _queueServiceClientProvider.Get(queueTrigger.Connection, _nameResolver);
            var queue = client.GetQueueClient(queueName);

            ITriggerBinding binding = new QueueTriggerBinding(parameter.Name, client, queue, argumentBinding,
                                                              _queueOptions, _exceptionHandler, _messageEnqueuedWatcherSetter,
                                                              _loggerFactory, _queueProcessorFactory);

            return(Task.FromResult(binding));
        }
        public Task <ITriggerBinding> TryCreateAsync(TriggerBindingProviderContext context)
        {
            ParameterInfo parameter            = context.Parameter;
            var           blobTriggerAttribute = TypeUtility.GetResolvedAttribute <BlobTriggerAttribute>(context.Parameter);

            if (parameter.ParameterType == typeof(PageBlobClient) && blobTriggerAttribute.Source == BlobTriggerSource.EventGrid)
            {
                _logger.LogError($"PageBlobClient is not supported with {nameof(BlobTriggerSource.EventGrid)}");
                return(Task.FromResult <ITriggerBinding>(null));
            }

            if (blobTriggerAttribute == null)
            {
                return(Task.FromResult <ITriggerBinding>(null));
            }

            string          resolvedCombinedPath = Resolve(blobTriggerAttribute.BlobPath);
            IBlobPathSource path = BlobPathSource.Create(resolvedCombinedPath);

            var hostBlobServiceClient  = _blobServiceClientProvider.GetHost();
            var dataBlobServiceClient  = _blobServiceClientProvider.Get(blobTriggerAttribute.Connection, _nameResolver);
            var hostQueueServiceClient = _queueServiceClientProvider.GetHost();
            var dataQueueServiceClient = _queueServiceClientProvider.Get(blobTriggerAttribute.Connection, _nameResolver);

            // premium does not support blob logs, so disallow for blob triggers
            // $$$
            // dataAccount.AssertTypeOneOf(StorageAccountType.GeneralPurpose, StorageAccountType.BlobOnly);

            ITriggerBinding binding = new BlobTriggerBinding(parameter, hostBlobServiceClient, hostQueueServiceClient,
                                                             dataBlobServiceClient, dataQueueServiceClient, path, blobTriggerAttribute.Source,
                                                             _hostIdProvider, _blobsOptions, _exceptionHandler, _blobWrittenWatcherSetter,
                                                             _blobTriggerQueueWriterFactory, _sharedContextProvider, _singletonManager, _loggerFactory);

            return(Task.FromResult(binding));
        }
Exemplo n.º 3
0
            internal QueueClient GetQueue(QueueAttribute attrResolved)
            {
                var client = _queueServiceClientProvider.Get(attrResolved.Connection);

                string queueName = attrResolved.QueueName.ToLowerInvariant();

                QueueClientExtensions.ValidateQueueName(queueName);

                return(client.GetQueueClient(queueName));
            }