Поделиться через


PooledQueueCache Класс

Определение

PooledQueueCache — это кэш, предназначенный для использования в качестве кэша сообщений в IQueueCache. Он способен хранить большое количество сообщений (концерты объемом сообщений) в течение длительных периодов времени (в минутах до неопределенного времени), обеспечивая минимальное снижение производительности из-за сборки мусора. Этот кэш в пуле выделяет память и никогда не освобождает ее. Он обеспечивает доступность освобожденных ресурсов в пулах, которые остаются в использовании приложениями в течение всего жизненного срока службы. Это означает, что эти объекты переходят в 2-е поколение, сжимаются, а затем остаются там. Это относительно дешево, так как единственные затраты, которые они теперь несут, это стоимость проверки, чтобы узнать, должны ли они быть освобождены в каждом цикле сбора. Так как в этом кэше используется небольшое количество больших объектов с относительно простыми графами объектов, проверка большого количества объектов с более сложными графами объектов менее затратна. Для повышения производительности этот кэш предназначен для более тесного согласования с данными, характерными для конкретной очереди. Отчасти поэтому, в отличие от SimpleQueueCache, этот кэш не реализует IQueueCache. Он предназначен для использования в реализациях IQueueCache для конкретных очередей.

public class PooledQueueCache : Orleans.Providers.Streams.Common.IPurgeObservable
type PooledQueueCache = class
    interface IPurgeObservable
Public Class PooledQueueCache
Implements IPurgeObservable
Наследование
PooledQueueCache
Реализации

Конструкторы

PooledQueueCache(ICacheDataAdapter, ILogger, ICacheMonitor, Nullable<TimeSpan>, Nullable<TimeSpan>)

Кэш очереди в пуле — это кэш сообщений, который получает ресурс из пула.

Свойства

IsEmpty

Указывает, является ли кэш пустым.

ItemCount

Возвращает число кэшированных сообщений.

Newest

Возвращает последнее добавленное кэшированное сообщение.

Oldest

Возвращает самое старое сообщение в кэше.

Методы

Add(List<CachedMessage>, DateTime)

Добавление списка сообщений очереди в кэш

GetCursor(IStreamIdentity, StreamSequenceToken)

Получает курсор для перечисления сообщений в кэше в предоставленном sequenceToken, отфильтрованном по указанному потоку.

GetCursor(StreamId, StreamSequenceToken)

Получает курсор для перечисления сообщений в кэше в предоставленном sequenceToken, отфильтрованном по указанному потоку.

RemoveOldestMessage()

Удалить самое старое сообщение в кэше, удалить самый старый блок, если блок пуст.

TryGetNextMessage(Object, IBatchContainer)

Получает следующее сообщение в кэше с указанным курсором.

Применяется к