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)

在提供的游标处获取缓存中的下一条消息

适用于