Esempio n. 1
0
        public PartitionProcessorFactory(
            IChangeFeedDocumentClient documentClient,
            ChangeFeedProcessorOptions changeFeedProcessorOptions,
            ILeaseCheckpointer leaseCheckpointer,
            string collectionSelfLink)
        {
            if (documentClient == null)
            {
                throw new ArgumentNullException(nameof(documentClient));
            }
            if (changeFeedProcessorOptions == null)
            {
                throw new ArgumentNullException(nameof(changeFeedProcessorOptions));
            }
            if (leaseCheckpointer == null)
            {
                throw new ArgumentNullException(nameof(leaseCheckpointer));
            }
            if (collectionSelfLink == null)
            {
                throw new ArgumentNullException(nameof(collectionSelfLink));
            }

            this.documentClient             = documentClient;
            this.changeFeedProcessorOptions = changeFeedProcessorOptions;
            this.leaseCheckpointer          = leaseCheckpointer;
            this.collectionSelfLink         = collectionSelfLink;
        }
        public PartitionSupervisorFactory(
            IChangeFeedObserverFactory observerFactory,
            ILeaseManager leaseManager,
            ILeaseCheckpointer leaseCheckpointer,
            ICheckpointPartitionProcessorFactory partitionProcessorFactory,
            ChangeFeedProcessorOptions options)
        {
            if (observerFactory == null)
            {
                throw new ArgumentNullException(nameof(observerFactory));
            }
            if (leaseManager == null)
            {
                throw new ArgumentNullException(nameof(leaseManager));
            }
            if (leaseCheckpointer == null)
            {
                throw new ArgumentNullException(nameof(leaseCheckpointer));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            if (partitionProcessorFactory == null)
            {
                throw new ArgumentNullException(nameof(partitionProcessorFactory));
            }

            this.observerFactory            = observerFactory;
            this.leaseManager               = leaseManager;
            this.leaseCheckpointer          = leaseCheckpointer;
            this.changeFeedProcessorOptions = options;
            this.partitionProcessorFactory  = partitionProcessorFactory;
        }
Esempio n. 3
0
        public IPartitionProcessor Create(ILease lease, ILeaseCheckpointer leaseCheckpointer, IChangeFeedObserver observer)
        {
            if (observer == null)
            {
                throw new ArgumentNullException(nameof(observer));
            }
            if (lease == null)
            {
                throw new ArgumentNullException(nameof(lease));
            }
            if (leaseCheckpointer == null)
            {
                throw new ArgumentNullException(nameof(leaseCheckpointer));
            }

            var settings = new ProcessorSettings
            {
                CollectionSelfLink = this.collectionSelfLink,
                StartContinuation  = !string.IsNullOrEmpty(lease.ContinuationToken) ?
                                     lease.ContinuationToken :
                                     this.changeFeedProcessorOptions.StartContinuation,
                PartitionKeyRangeId = lease.PartitionId,
                FeedPollDelay       = this.changeFeedProcessorOptions.FeedPollDelay,
                MaxItemCount        = this.changeFeedProcessorOptions.MaxItemCount,
                StartFromBeginning  = this.changeFeedProcessorOptions.StartFromBeginning,
                StartTime           = this.changeFeedProcessorOptions.StartTime,
                SessionToken        = this.changeFeedProcessorOptions.SessionToken,
            };

            var checkpointer = new PartitionCheckpointer(leaseCheckpointer, lease);

            var changeFeedOptions = new ChangeFeedOptions
            {
                MaxItemCount        = settings.MaxItemCount,
                PartitionKeyRangeId = settings.PartitionKeyRangeId,
                SessionToken        = settings.SessionToken,
                StartFromBeginning  = settings.StartFromBeginning,
                RequestContinuation = settings.StartContinuation,
                StartTime           = settings.StartTime,
            };
            var changeFeedQuery = this.documentClient.CreateDocumentChangeFeedQuery(settings.CollectionSelfLink, changeFeedOptions);

            changeFeedQuery = new ChangeFeedQueryTimeoutDecorator(changeFeedQuery, this.healthMonitor, this.changeFeedProcessorOptions.ChangeFeedTimeout, lease);

            return(new PartitionProcessor(observer, changeFeedQuery, changeFeedOptions, settings, checkpointer));
        }
Esempio n. 4
0
 public PartitionCheckpointer(ILeaseCheckpointer leaseCheckpointer, ILease lease)
 {
     this.leaseCheckpointer = leaseCheckpointer;
     this.lease             = lease;
 }
Esempio n. 5
0
 public IPartitionProcessor Create(ILease lease, ILeaseCheckpointer leaseCheckpointer, IChangeFeedObserver observer)
 {
     return(this.partitionProcessorFactory.Create(lease, observer));
 }