IReliableConcurrentQueue<T> Schnittstelle

Definition

Stellt eine zuverlässige Sammlung von persistenten, replizierten Werten mit optimaler First-In-First-Out-Reihenfolge dar.

public interface IReliableConcurrentQueue<T> : Microsoft.ServiceFabric.Data.IReliableState
type IReliableConcurrentQueue<'T> = interface
    interface IReliableState
Public Interface IReliableConcurrentQueue(Of T)
Implements IReliableState

Typparameter

T

Der Typ der Werte, die in der zuverlässigen Warteschlange slim enthalten sind.

Implementiert

Hinweise

Gedacht als Alternative zu IReliableQueue<T> Workloads, bei denen keine strikte Reihenfolge erforderlich ist, da durch die Lockerung der Bestelleinschränkung die Parallelität erheblich verbessert werden kann. IReliableQueue<T> schränkt gleichzeitige Verbraucher und Hersteller auf jeweils maximal 1 ein, während IReliableConcurrentQueue<T> keine solche Einschränkung auferlegt wird.

IReliableConcurrentQueue<T> bietet nicht die gleiche Semantik der Transaktionsisolation wie die anderen zuverlässigen Datenstrukturen. Ausführliche Informationen zu der gegebenenfalls bereitgestellten Isolation finden Sie in den einzelnen Vorgängen und Eigenschaften (EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)und Count).

Es wird erwartet, dass Werte in der Warteschlange relativ kurzlebig sind. mit anderen Worten, dass die Ausgehende Rate (TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)) gleich oder größer als der Eingangskurs (EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)) ist. Ein Verstoß gegen diese Erwartung kann die Systemleistung beeinträchtigen. Eine geplante Warteschlangenkapazitätseinschränkung, die eingehende Queues drosselt, sobald die Kapazität erreicht ist, hilft bei der Verwaltung dieser Eigenschaft. Eigenschaft enthaltenen Wert.

Da die Reihenfolge von Elementen nicht streng garantiert ist, dürfen Annahmen über die Reihenfolge von zwei beliebigen Werten in der Warteschlange NICHT getroffen werden. Die bestmögliche First-In-First-Out-Bestellung ist der Fairness halber vorgesehen; Die Zeit, die ein Wert in der Warteschlange aufwendet, sollte mit der Fehlerrate (Fehler können die Reihenfolge der Warteschlange ändern) und der Ausqueue-Rate, aber nicht mit der Queue-Rate zusammenhängen.

IReliableConcurrentQueue<T> bietet keinen Peek-Vorgang, aber durch Kombination TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>) kann Abort() die gleiche Semantik erreicht werden. Weitere Details und ein Beispiel finden Sie unter TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>) .

Werte, die in dieser Warteschlange gespeichert sind, dürfen nicht außerhalb des Kontexts eines Vorgangs in der Warteschlange mutiert werden. Es wird dringend empfohlen, unveränderlich zu machen T , um versehentliche Datenbeschädigungen zu vermeiden.

Transaktion ist die Einheit der Parallelität: Benutzer können mehrere Transaktionen zu einem bestimmten Zeitpunkt ausführen, aber für eine bestimmte Transaktion muss jede API einzeln aufgerufen werden. Daher müssen alle Reliable Collection-APIs, die eine Transaktion aufnehmen und eine Aufgabe zurückgeben, einzeln gewartet werden.

Eigenschaften

Count

Ruft die Anzahl der Werte in ab IReliableConcurrentQueue<T>.

Name

Ruft einen Wert ab, der den eindeutigen Namen für die IReliableState instance angibt.

(Geerbt von IReliableState)

Methoden

EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)

Stellen Sie die Warteschlange eines Werts in die Warteschlange ein.

TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)

Trennen Sie einen Wert vorläufig aus der Warteschlange. Wenn die Warteschlange leer ist, wartet der Vorgang zum Löschen, bis ein Element verfügbar wird.

Gilt für: