你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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> 将并发使用者和生成者限制为每个最多一个,而 IReliableConcurrentQueue<T> 不施加此类限制。

IReliableConcurrentQueue<T> 不提供与其他可靠数据结构相同的事务隔离语义。 请参阅各个操作和属性 (EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)Count) ,详细了解它们提供的隔离(如果有)。

预计值在队列中的生存期相对较短;换句话说,出口 (TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)) 速率等于或大于入口 (EnqueueAsync(ITransaction, T, CancellationToken, Nullable<TimeSpan>)) 速率。 违反此预期可能会降低系统性能。 计划队列容量约束在达到容量后将限制传入队列将有助于维护此属性。 属性中找到的值。

由于无法严格保证元素的排序,因此不得对队列中任意两个值的排序进行假设。 为了公平,提供尽力的先入先出排序:值在队列中花费的时间应与失败率相关, (失败可能会更改队列的排序) 和取消排队率,但不会更改排队速率。

IReliableConcurrentQueue<T> 不提供速览操作,但是通过组合 TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)Abort() 相同的语义可以实现。 有关更多详细信息和示例,请参阅 TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)

存储在此队列中的值不得在队列上操作的上下文之外发生改变。 强烈建议使 T 不可变,以避免意外的数据损坏。

事务是并发单位:用户可以在任何给定时间点有多个未完成的事务,但对于给定事务,必须一次调用一个 API。 因此,所有接受事务并返回 Task 的可靠集合 API 都必须一次等待一个。

属性

Count

获取 中的 IReliableConcurrentQueue<T>值数。

Name

获取一个值,该值指示实例的唯一 IReliableState 名称。

(继承自 IReliableState)

方法

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

将值的排队暂存到队列中。

TryDequeueAsync(ITransaction, CancellationToken, Nullable<TimeSpan>)

暂时将某个值从队列中取消排队。 如果队列为空,则取消排队操作将等待项变得可用。

适用于