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


PooledQueueCache<TQueueMessage,TCachedMessage> Класс

Определение

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

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

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