ChangeFeedEventHost Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Achtung
Switch to the ChangeFeedProcessorBuilder class and use the BuildAsync method for building the change feed processor host or the BuildEstimatorAsync method for building the remaining work estimator.
Einfacher Host zum Verteilen von Änderungsfeedereignissen auf Beobachter und damit zur Skalierung dieser Beobachter. Es verteilt die Last auf seine Instanzen und ermöglicht die dynamische Skalierung:
- Partitionen in partitionierten Sammlungen werden auf Instanzen/Beobachter verteilt.
- Neue instance verwendet Leases von vorhandenen Instanzen, um die Verteilung gleich zu machen.
- Wenn ein instance stirbt, werden die Leases auf die verbleibenden Instanzen verteilt. Dies ist nützlich für Szenarios, in denen die Partitionsanzahl hoch ist, sodass ein Host/virtueller Computer nicht in der Lage ist, die vielen Änderungsfeedereignisse zu verarbeiten. Die Clientanwendung muss die Prozessorimplementierung mit ChangeFeedEventHost implementieren IChangeFeedObserver und registrieren.
[System.Obsolete("Switch to the ChangeFeedProcessorBuilder class and use the BuildAsync method for building the change feed processor host or the BuildEstimatorAsync method for building the remaining work estimator.")]
public class ChangeFeedEventHost
[<System.Obsolete("Switch to the ChangeFeedProcessorBuilder class and use the BuildAsync method for building the change feed processor host or the BuildEstimatorAsync method for building the remaining work estimator.")>]
type ChangeFeedEventHost = class
Public Class ChangeFeedEventHost
- Vererbung
-
ChangeFeedEventHost
- Attribute
Beispiele
class DocumentFeedObserver : IChangeFeedObserver
{
private static int s_totalDocs = 0;
public Task OpenAsync(ChangeFeedObserverContext context)
{
Console.WriteLine("Worker opened, {0}", context.PartitionKeyRangeId);
return Task.CompletedTask; // Requires targeting .NET 4.6+.
}
public Task CloseAsync(ChangeFeedObserverContext context, ChangeFeedObserverCloseReason reason)
{
Console.WriteLine("Worker closed, {0}", context.PartitionKeyRangeId);
return Task.CompletedTask;
}
public Task ProcessChangesAsync(ChangeFeedObserverContext context, IReadOnlyList<Document> docs)
{
Console.WriteLine("Change feed: total {0} doc(s)", Interlocked.Add(ref s_totalDocs, docs.Count));
return Task.CompletedTask;
}
}
static async Task StartChangeFeedHost()
{
string hostName = Guid.NewGuid().ToString();
DocumentCollectionInfo documentCollectionLocation = new DocumentCollectionInfo
{
Uri = new Uri("https://YOUR_SERVICE.documents.azure.com:443/"),
MasterKey = "YOUR_SECRET_KEY==",
DatabaseName = "db1",
CollectionName = "documents"
};
DocumentCollectionInfo leaseCollectionLocation = new DocumentCollectionInfo
{
Uri = new Uri("https://YOUR_SERVICE.documents.azure.com:443/"),
MasterKey = "YOUR_SECRET_KEY==",
DatabaseName = "db1",
CollectionName = "leases"
};
Console.WriteLine("Main program: Creating ChangeFeedEventHost...");
ChangeFeedEventHost host = new ChangeFeedEventHost(hostName, documentCollectionLocation, leaseCollectionLocation);
await host.RegisterObserverAsync<DocumentFeedObserver>();
Console.WriteLine("Main program: press Enter to stop...");
Console.ReadLine();
await host.UnregisterObserversAsync();
}
Hinweise
Es verwendet eine zusätzliche Dokumentsammlung zum Verwalten von Leases für eine Partition. Jeder EventProcessorHost-instance führt die folgenden zwei Aufgaben aus: 1) Lease erneuern: Es verfolgt die Leases, die sich derzeit im Besitz des Hosts befinden, und verlängert die Leases kontinuierlich. 2) Erwerben von Leases: Jeder instance fragt kontinuierlich alle Leases ab, um zu überprüfen, ob leases vorhanden sind, die erworben werden sollten, damit das System in einen ausgeglichenen Zustand versetzt wird.
Konstruktoren
ChangeFeedEventHost(String, DocumentCollectionInfo, DocumentCollectionInfo) |
Veraltet.
Initialisiert eine neue Instanz der ChangeFeedEventHost-Klasse. |
ChangeFeedEventHost(String, DocumentCollectionInfo, DocumentCollectionInfo, ChangeFeedHostOptions) |
Veraltet.
Initialisiert eine neue Instanz der ChangeFeedEventHost-Klasse. |
ChangeFeedEventHost(String, DocumentCollectionInfo, DocumentCollectionInfo, ChangeFeedOptions, ChangeFeedHostOptions) |
Veraltet.
Initialisiert eine neue Instanz der ChangeFeedEventHost-Klasse. |
Eigenschaften
HostName |
Veraltet.
Ruft den Hostnamen ab, der ein eindeutiger Name für die instance ist. |
Methoden
GetEstimatedRemainingWork() |
Veraltet.
Überprüft asynchron die aktuellen vorhandenen Leases und berechnet eine Schätzung der verbleibenden Arbeit pro geleasten Partitionen. |
RegisterObserverAsync<T>() |
Veraltet.
Registriert die Implementierung der Beobachterschnittstelle asynchron beim Host. Diese Methode startet auch den Host und ermöglicht es, am Partitionsverteilungsprozess teilzunehmen. |
RegisterObserverFactoryAsync(IChangeFeedObserverFactory) |
Veraltet.
Registriert die Observer-Factoryimplementierung asynchron beim Host. Diese Methode startet auch den Host und ermöglicht es, am Partitionsverteilungsprozess teilzunehmen. |
UnregisterObserversAsync() |
Veraltet.
Beendet den Host asynchron instance. Diese Methode verwaltet die Leases für alle derzeit gehaltenen Partitionen und ermöglicht es jedem Host, instance, durch Aufrufen der -Methode mit dem -Objekt sauber herunterzufahren. |
Gilt für:
Azure SDK for .NET