Exemplo n.º 1
0
 public FeedProcessorCore(
     ChangeFeedObserver <T> observer,
     FeedIterator resultSetIterator,
     ProcessorSettings settings,
     PartitionCheckpointer checkpointer,
     CosmosJsonSerializer cosmosJsonSerializer)
 {
     this.observer             = observer;
     this.settings             = settings;
     this.checkpointer         = checkpointer;
     this.resultSetIterator    = resultSetIterator;
     this.cosmosJsonSerializer = cosmosJsonSerializer;
 }
        public FeedProcessorCore(ChangeFeedObserver <T> observer, CosmosContainer container, ProcessorSettings settings, PartitionCheckpointer checkpointer)
        {
            this.observer     = observer;
            this.settings     = settings;
            this.checkpointer = checkpointer;
            this.options      = new ChangeFeedOptions
            {
                MaxItemCount        = settings.MaxItemCount,
                PartitionKeyRangeId = settings.LeaseToken,
                SessionToken        = settings.SessionToken,
                StartFromBeginning  = settings.StartFromBeginning,
                RequestContinuation = settings.StartContinuation,
                StartTime           = settings.StartTime,
            };

            this.query = container.Client.DocumentClient.CreateDocumentChangeFeedQuery(container.LinkUri.ToString(), this.options);
        }
Exemplo n.º 3
0
        public override FeedProcessor Create(DocumentServiceLease lease, ChangeFeedObserver <T> observer)
        {
            if (observer == null)
            {
                throw new ArgumentNullException(nameof(observer));
            }
            if (lease == null)
            {
                throw new ArgumentNullException(nameof(lease));
            }

            ProcessorSettings settings = new ProcessorSettings
            {
                StartContinuation = !string.IsNullOrEmpty(lease.ContinuationToken) ?
                                    lease.ContinuationToken :
                                    this.changeFeedProcessorOptions.StartContinuation,
                LeaseToken         = lease.CurrentLeaseToken,
                FeedPollDelay      = this.changeFeedProcessorOptions.FeedPollDelay,
                MaxItemCount       = this.changeFeedProcessorOptions.MaxItemCount,
                StartFromBeginning = this.changeFeedProcessorOptions.StartFromBeginning,
                StartTime          = this.changeFeedProcessorOptions.StartTime,
                SessionToken       = this.changeFeedProcessorOptions.SessionToken,
            };

            string partitionKeyRangeId = lease.CurrentLeaseToken;

            PartitionCheckpointerCore checkpointer = new PartitionCheckpointerCore(this.leaseCheckpointer, lease);
            ChangeFeedPartitionKeyResultSetIteratorCore iterator = ResultSetIteratorUtils.BuildResultSetIterator(
                partitionKeyRangeId: partitionKeyRangeId,
                continuationToken: settings.StartContinuation,
                maxItemCount: settings.MaxItemCount,
                cosmosContainer: this.container,
                startTime: settings.StartTime,
                startFromBeginning: settings.StartFromBeginning);

            return(new FeedProcessorCore <T>(observer, iterator, settings, checkpointer, this.cosmosJsonSerializer));
        }