![]() |
1
1
步骤#3的另一种实现方式是从每个队列发送消息,直到该队列的优先级低于下一个等待队列的优先级。但是,这意味着您需要重新计算
|
![]() |
2
1
由于您对哪些消息优先于其他消息有特定的想法,所以您需要一个允许您为每个队列条目计算优先级分数的实现。由于您有时希望对消息进行分组,因此在为新队列条目分配优先级时,您还需要能够检查队列(例如,您可以决定将新元素的优先级设置为与具有相同用户名的最新现有元素的优先级相等,只要已具有该优先级的元素不超过N个)。 假设您有固定数量的出站网关,您可能希望每个网关有一个优先级队列。接收新消息并确定将其放置在哪个队列上的路由组件可以检查每个现有队列中的元素,以确定将其放置在哪个队列上(即,将其放置在与具有相同用户ID的其他元素相同的队列中)以优化吞吐量。
|
![]() |
3
0
看看操作系统任务调度和网络调度算法。他们试图解决将有限资源的时间片分配给更多消费者的许多类似问题。有大量的研究。特别地 weighted fair queueing 听起来它可能对你有用。 任何特定的选择在很大程度上取决于您希望算法具有的行为。例如,如果您想要最小化所有队列的延迟,那么您需要对具有最旧消息的队列进行优先级排序,并可能为较长的队列提供更大的切片。 另一方面,您可能希望抢先执行大批量发送的人,因为他们的消息无论如何都会有很长的延迟,并在批量发送之前让使用率较低的队列通过。 |
![]() |
pgsandstrom · 添加约束以防止表中出现NaN 7 年前 |
![]() |
Melolailo · 将约束与外键一起使用 7 年前 |
![]() |
QB1979 · 添加约束,使列仅接受来自另一列的逗号分隔值 7 年前 |
![]() |
ChemPaul · Python lmfit约束:a<b<c 7 年前 |
![]() |
Simone Bolognini · 多约束Scipy极小化 7 年前 |
![]() |
PaFi · 可视化格式语言多谓词 7 年前 |