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; }
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)); }
public PartitionCheckpointer(ILeaseCheckpointer leaseCheckpointer, ILease lease) { this.leaseCheckpointer = leaseCheckpointer; this.lease = lease; }
public IPartitionProcessor Create(ILease lease, ILeaseCheckpointer leaseCheckpointer, IChangeFeedObserver observer) { return(this.partitionProcessorFactory.Create(lease, observer)); }