我想实现一个优先级工作队列,其中一组消息的优先级一旦进入队列就可以更改。由于这是一个处理时间可变的工作队列,因此消息不是使用循环算法分配的,而是在资源空闲(使用每个用户的限制)时从队列中拉出的。
我提出了两个实施思路:
- 使用RabbitMQ的优先级队列,当请求更改优先级时,从队列中读取具有此优先级的消息,然后以不同的优先级重新发送它们。 (鉴于O(n)的复杂性,我不确定这是否是一个好方法。)
- 为每组消息使用几个名称不同的队列,并使用一个单独的队列将当前优先级列表(队列名称的有序列表)传达给工作人员。 (使用这种方法,我不确定如何使优先级列表“保持”,以便新加入的工作人员知道当前的优先级列表是什么。)
您将如何实施? RabbitMQ是否适合该用例?