次の方法で共有


PooledQueueCache<TQueueMessage,TCachedMessage> クラス

定義

PooledQueueCache は、IQueueCache のメッセージ キャッシュとして機能することを目的としたキャッシュです。 ガベージ コレクションによるパフォーマンスの低下を最小限に抑えながら、長時間 (分から不定) の大量のメッセージ (ギグ相当のメッセージ) を格納できます。 このプールされたキャッシュはメモリを割り当て、解放しません。 これにより、サービスの有効期間を通じてアプリケーションの使用が維持されるプールで、解放されたリソースを使用できるようになります。 つまり、これらのオブジェクトは gen2 に移動し、圧縮され、そこにとどまります。 これは比較的安価です。現在発生する唯一のコストは、各コレクション サイクルで解放する必要があるかどうかを確認するコストです。 このキャッシュでは、比較的単純なオブジェクト グラフを持つ少数のラージ オブジェクトが使用されるため、より複雑なオブジェクト グラフを含む多数の小さなオブジェクトを確認するコストが低くなります。 パフォーマンス上の理由から、このキャッシュはキュー固有のデータに合わせて設計されています。 これは、SimpleQueueCache とは異なり、このキャッシュで IQueueCache が実装されない理由の一部です。 これは、IQueueCache のキュー固有の実装で使用することを目的としています。

public class PooledQueueCache<TQueueMessage,TCachedMessage> : Orleans.Providers.Streams.Common.IPurgeObservable<TCachedMessage> where TCachedMessage : struct
type PooledQueueCache<'QueueMessage, 'CachedMessage (requires 'CachedMessage : struct)> = class
    interface IPurgeObservable<'CachedMessage (requires 'CachedMessage : struct)>
Public Class PooledQueueCache(Of TQueueMessage, TCachedMessage)
Implements IPurgeObservable(Of TCachedMessage)

型パラメーター

TQueueMessage

キュー固有のデータ

TCachedMessage

密にパックされたキャッシュ構造。 値型のみを含める必要があります。

継承
PooledQueueCache<TQueueMessage,TCachedMessage>
実装

コンストラクター

PooledQueueCache<TQueueMessage,TCachedMessage>(ICacheDataAdapter<TQueueMessage, TCachedMessage>, ICacheDataComparer<TCachedMessage>, ILogger, ICacheMonitor, Nullable<TimeSpan>)

プールされたキュー キャッシュは、プールからリソースを取得するメッセージのキャッシュです

PooledQueueCache<TQueueMessage,TCachedMessage>(ICacheDataAdapter<TQueueMessage, TCachedMessage>, ICacheDataComparer<TCachedMessage>, Logger, ICacheMonitor, Nullable<TimeSpan>)

プールされたキュー キャッシュは、プールからリソースを取得するメッセージのキャッシュです

プロパティ

IsEmpty

キャッシュが空かどうかを示します

ItemCount

キャッシュされたメッセージ数

Newest

最近追加されたキャッシュ されたメッセージ

Oldest

キャッシュ内の最も古いメッセージ

メソッド

Add(List<TQueueMessage>, DateTime)

キュー メッセージの一覧をキャッシュに追加する

GetCursor(IStreamIdentity, StreamSequenceToken)

指定したストリームでフィルター処理された、指定された sequenceToken にあるキャッシュ内のメッセージを列挙するカーソルを取得します。

RemoveOldestMessage()

キャッシュ内の最も古いメッセージを削除し、ブロックが空の場合は最も古いブロックも削除します

TryGetNextMessage(Object, IBatchContainer)

指定されたカーソル位置にあるキャッシュ内の次のメッセージを取得します

適用対象