Partager via


IReliableConcurrentQueue<T> Interface

Définition

Représente une collection fiable de valeurs persistantes et répliquées avec l’ordre de premier entrant premier sorti le mieux possible.

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

Paramètres de type

T

Type des valeurs contenues dans la file d’attente fiable slim.

Implémente

Remarques

Conçu comme alternative aux IReliableQueue<T> charges de travail où un classement strict n’est pas requis, car en assouplissant la contrainte de classement, la concurrence peut être considérablement améliorée. IReliableQueue<T> limite les consommateurs et les producteurs simultanés à un maximum chacun, mais IReliableConcurrentQueue<T> n’impose aucune restriction de ce type.

IReliableConcurrentQueue<T> n’offre pas la même sémantique d’isolation des transactions que les autres structures de données fiables. Consultez les opérations et propriétés individuelles (EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)et Count) pour plus d’informations sur l’isolation, le cas échéant, qu’elles fournissent.

On s’attend à ce que les valeurs soient relativement de courte durée dans la file d’attente ; en d’autres termes, que le taux de sortie (TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)) est égal ou supérieur au taux d’entrée (EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)). Le non-respect de cette attente peut aggraver les performances du système. Une contrainte de capacité de file d’attente planifiée qui limite les files d’attente entrantes une fois la capacité atteinte permet de gérer cette propriété. .

Étant donné que le classement des éléments n’est pas strictement garanti, les hypothèses relatives à l’ordre de deux valeurs dans la file d’attente NE DOIVENT PAS être faites. Le meilleur effort de classement premier entrant premier sorti est fourni pour assurer l’équité; le temps qu’une valeur passe dans la file d’attente doit être lié au taux d’échec (les échecs peuvent modifier l’ordre de la file d’attente) et au taux de retrait de la file d’attente, mais pas au taux de mise en file d’attente.

IReliableConcurrentQueue<T> n’offre pas d’opération Peek, mais en TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>) combinant et Abort() la même sémantique peut être obtenue. Consultez TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>) pour plus d’informations et un exemple.

Les valeurs stockées dans cette file d’attente NE DOIVENT PAS être mutées en dehors du contexte d’une opération sur la file d’attente. Il est fortement recommandé de rendre T immuable afin d’éviter toute altération accidentelle des données.

La transaction est l’unité d’accès concurrentiel : les utilisateurs peuvent avoir plusieurs transactions en cours à un moment donné, mais pour une transaction donnée, chaque API doit être appelée une à la fois. Par conséquent, toutes les API Reliable Collection qui acceptent une transaction et retournent une tâche doivent être attendues une par une.

Propriétés

Count

Obtient le nombre de valeurs dans le IReliableConcurrentQueue<T>.

Name

Obtient une valeur indiquant le nom unique de l’instance IReliableState .

(Hérité de IReliableState)

Méthodes

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

Placez la file d’attente d’une valeur dans la file d’attente.

TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)

Retirer provisoirement une valeur de la file d’attente. Si la file d’attente est vide, l’opération de suppression de la file d’attente attend qu’un élément soit disponible.

S’applique à