PartySendMessageQueuingConfiguration
用于修改发送邮件时本地排队行为的配置参数。
语法
struct PartySendMessageQueuingConfiguration {
int8_t priority;
uint32_t identityForCancelFilters;
uint32_t timeoutInMilliseconds;
}
成员
priority
int8_t
本地排队消息相对于聊天数据或从其他本地终结点发送的消息的优先级。
priority
必须是介于 c_minSendMessageQueuingPriority
和 c_maxSendMessageQueuingPriority
(含)之间的值。 数字越大,相对优先级越高(将首先传输)越低。 当没有向 PartyLocalEndpoint::SendMessage() 提供 PartySendMessageQueuingConfiguration 结构时的默认值是c_defaultSendMessageQueuingPriority
,它正好位于有符号整数范围(零)的中间。
发送队列优先级不会修改从给定本地终结点发送的消息的传输或传递顺序。 它只影响来自不同本地终结点的消息的排序,或在终结点与内部传输的聊天数据之间(使用优先级 c_chatSendMessageQueuingPriority
)之间的排序。 具有优先级最高的消息的本地终结点发送队列将首先使其消息符合传输条件。 如果由本地终结点排队的所有剩余消息的优先级相等,则单个消息将有资格按其 PartyLocalEndpoint::SendMessage() 调用发生的相同顺序进行传输。
考虑此行为的一种方法是,高优先级消息会自动将以前所有邮件的优先级从同一本地终结点提升到相同的值,以确保及时传递高优先级消息,但不会中断以前由本地终结点传输的消息的顺序传递预期。 其他本地终结点有自己的发送顺序,因此没有此类排序保证(尽管参与方库尽量保留最初发送的顺序)。
由于连接质量或接收方响应能力,消息的发送队列优先级比连接可以支持的字节数多,则消息的发送队列优先级很重要。 以更高的优先级发送更重要的消息可确保他们获得第一个使用受限网络资源的机会。 如果继续以比成功传输的速度更快地发送消息,则优先级较低的消息可能会"不足",并且关联的本地终结点发送队列将继续增长。 请务必通过使用 PartyLocalEndpoint::CancelMessages() 取消无关消息来管理这种潜在的增长,使用 timeoutInMilliseconds
字段自动超时已排队过长的邮件,或只是减少 PartyLocalEndpoint::SendMessage() 调用的大小和/或频率。
identityForCancelFilters
uint32_t
在使用取消筛选表达式评估消息的适用性时要使用的调用方定义值。
此消息标识值可以具有任何特定于调用方的含义,并且在评估消息是否与可选提供的取消筛选表达式匹配时,不由 Party 库解释,而不是供 PartyLocalEndpoint::CancelMessages() 使用。
如果未向 PartyLocalEndpoint::SendMessage()提供 PartySendMessageQueuingConfiguration 结构,则使用默认值零。
取消消息有助于防止本地发送队列在遇到较差的网络条件时过度增长。 如果有使用最新信息定期发送的邮件类别,并且应替换任何以前排队过期的消息,而这些消息可能仍在等待传输机会,则取消与某些筛选表达式匹配的消息标识非常有效。 如果有一个实例或类别的操作性消息,而这些消息的丢失不会造成致命损失,并且不值得尝试传输而不是更有价值的排队消息,则取消操作也非常有用。
此本地标识值不是传输的数据有效负载的一部分。 消息开始传输后,它不再适用,无法再由 PartyLocalEndpoint::CancelMessages() 从本地发送队列中删除。
timeoutInMilliseconds
uint32_t
允许消息保留在 Party 托管的发送队列中等待传输机会的最长时间(以毫秒为单位)。
如果由于连接质量或接收方响应能力导致此超时时间尚未开始传输消息,则消息将中止并从队列中删除,而不会发送。
timeoutInMilliseconds
值为零表示不应出现超时,并且消息应保持排队状态,直到成功传输、显式取消或遇到某些传输失败(如远程断开连接)。 如果未向 PartyLocalEndpoint::SendMessage ()提供 PartySendMessageQueuingConfiguration 结构,则默认值为零。
消息发送队列超时有助于防止在遇到恶劣的网络条件时发送队列过度增长。 它们可以很好地处理包含时间敏感的定期数据的消息,在这些消息中传输过时的邮件会浪费带宽,因为会定期发送较新的完整替换消息,而丢失任何单个消息并不致命。
此超时值仅影响到参与方管理的发送队列。 它不会影响实际传输消息所需的时间 (环境延迟),也不会更改等待接收方确认传输的时间 (如有适用)。
在向没有直接对等连接目标发送时,会评估两次该超时值: 一次是发送客户端对透明云中继的本地发送队列,受本地环境条件和对中继的传输速率影响; 第二次是对中继本身,它可能会根据不同的网络条件、传输速率或远程目标的响应能力强制在转发之前进行排队。
要求
标题: Party.h