次の方法で共有


IReliableConcurrentQueue<T> インターフェイス

定義

ベスト エフォートの先入れ先出し順序を使用して、永続化されたレプリケートされた値の信頼できるコレクションを表します。

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

型パラメーター

T

信頼できるキュースリムに含まれる値の型。

実装

注釈

順序付けの制約を IReliableQueue<T> 緩和することで、コンカレンシーを大幅に向上できるため、厳密な順序付けが必要ないワークロードの代わりに使用することを目的としています。 IReliableQueue<T> では、同時コンシューマーとプロデューサーをそれぞれ最大 1 つに制限しますが IReliableConcurrentQueue<T> 、そのような制限はありません。

IReliableConcurrentQueue<T> は、他の信頼できるデータ構造と同じトランザクション分離セマンティクスを提供しません。 個々の操作とプロパティ (EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)、およびCount) を参照して、TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)分離 (存在する場合) について詳しく説明します。

値はキュー内で比較的短い有効期間になると予想されます。つまり、エグレス () レートがイングレス (TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)) レート以上であることを示します。 この期待に違反すると、システムのパフォーマンスが低下する可能性があります。 容量に達すると、受信エンキューを調整する計画キュー容量制約は、このプロパティの維持に役立ちます。 プロパティに基づきます)。

要素の順序付けは厳密には保証されないため、キュー内の 2 つの値の順序に関する想定を行う必要はありません。 公平性のために、ベストエフォートの先入れ先出し順序が提供されます。値がキューに費やす時間は、障害率 (障害によってキューの順序が変更される可能性があります) とデキューレートに関連している必要がありますが、エンキューレートには関係しません。

IReliableConcurrentQueue<T>は Peek 操作を提供しませんが、 と Abort() を組み合わせることでTryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)、同じセマンティックを実現できます。 詳細と例については、以下を参照してください TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)

このキューに格納されている値は、キュー上の操作のコンテキスト外で変更することはできません。 偶発的なデータ破損を T 回避するために、不変にすることを強くお勧めします。

トランザクションはコンカレンシーの単位です。ユーザーは、特定の時点で複数のトランザクションを実行中にすることができますが、特定のトランザクションに対して各 API を一度に 1 つずつ呼び出す必要があります。 そのため、トランザクションを受け取ってタスクを返す Reliable Collection API はすべて、一度に 1 つずつ待機する必要があります。

プロパティ

Count

内の値の数を取得します IReliableConcurrentQueue<T>

Name

インスタンスの一意の名前を示す値を IReliableState 取得します。

(継承元 IReliableState)

メソッド

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

値のエンキューをキューにステージングします。

TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)

キューから値を仮にデキューします。 キューが空の場合、デキュー操作は項目が使用可能になるまで待機します。

適用対象