Azure队列消息优先级

bog*_*dan 8 azure azure-storage-queues

我在Azure存储中有一个队列,例如'messages'.每隔1小时,一些服务会向此队列推送一些应该更新数据的消息.但是,在某些情况下,我也从另一个地方推送到此队列消息,我希望此消息立即进行,我无法为此消息设置优先级.

这个问题的最佳解决方案是什么?我可以使用两个不同的队列("消息"和"消息优先级"),还是一个糟糕的方法?

Sim*_*nro 8

正确的方法是使用多个队列 - "普通优先级"和"高优先级"队列.我们实现的是单个工作者角色中的多个队列读取器线程 - 每个线程首先检查高优先级队列,如果它是空的,则查看正常队列.这样,高优先级消息将由第一个可用线程处理(几乎立即),并且无论消息来自何处,相同的代码都会运行.它还节省了必须让读者连续查看单个队列并且因为很少有消息而必须退出的情况.

  • 这种方法没有饥饿问题吗?给定足够多的高优先级消息,将永远不会为普通消息队列提供服务? (2认同)
  • 好点,但是“高优先级”成为新的“常态”,并且您会遇到一系列外部问题,这些问题会导致许多高优先级消息 - 这是需要解决的主要业务问题或恐慌。我们的系统记录车辆跟踪数据,“高优先级”用于碰撞检测(将遥测数据发送到紧急服务部门)。在这种情况下,**不可能**高优先级会超出正常水平,除非出现错误或世界末日即将来临 (2认同)
  • 如果有两个队列并且自动缩放只占一个队列,那么如何在Azure中处理缩放? (2认同)