/// <summary> /// Initializes a new instance of the <see cref="DocumentDB.ChangeFeedProcessor.ChangeFeedEventHost"/> class. /// </summary> /// <param name="hostName">Unique name for this host.</param> /// <param name="documentCollectionLocation">Specifies location of the DocumentDB collection to monitor changes for.</param> /// <param name="auxCollectionLocation">Specifies location of auxiliary data for load-balancing instances of <see cref="DocumentDB.ChangeFeedProcessor.ChangeFeedEventHost" />.</param> /// <param name="changeFeedOptions">Options to pass to the Microsoft.AzureDocuments.DocumentClient.CreateChangeFeedQuery API.</param> /// <param name="hostOptions">Additional options to control load-balancing of <see cref="DocumentDB.ChangeFeedProcessor.ChangeFeedEventHost" /> instances.</param> public ChangeFeedEventHost( string hostName, DocumentCollectionInfo documentCollectionLocation, DocumentCollectionInfo auxCollectionLocation, ChangeFeedOptions changeFeedOptions, ChangeFeedHostOptions hostOptions) { if (documentCollectionLocation == null) { throw new ArgumentException("documentCollectionLocation"); } if (documentCollectionLocation.Uri == null) { throw new ArgumentException("documentCollectionLocation.Uri"); } if (string.IsNullOrWhiteSpace(documentCollectionLocation.DatabaseName)) { throw new ArgumentException("documentCollectionLocation.DatabaseName"); } if (string.IsNullOrWhiteSpace(documentCollectionLocation.CollectionName)) { throw new ArgumentException("documentCollectionLocation.CollectionName"); } if (hostOptions.MinPartitionCount > hostOptions.MaxPartitionCount) { throw new ArgumentException("hostOptions.MinPartitionCount cannot be greater than hostOptions.MaxPartitionCount"); } this.collectionLocation = CanoninicalizeCollectionInfo(documentCollectionLocation); this.changeFeedOptions = changeFeedOptions; this.options = hostOptions; this.HostName = hostName; this.auxCollectionLocation = CanoninicalizeCollectionInfo(auxCollectionLocation); this.partitionKeyRangeIdToWorkerMap = new ConcurrentDictionary <string, WorkerData>(); }
public PartitionManager(string workerName, ILeaseManager <T> leaseManager, ChangeFeedHostOptions options) { this.workerName = workerName; this.leaseManager = leaseManager; this.options = options; this.currentlyOwnedPartitions = new ConcurrentDictionary <string, T>(); this.keepRenewingDuringClose = new ConcurrentDictionary <string, T>(); this.partitionObserverManager = new PartitionObserverManager(this); }