具有rebus的优先级队列,由消费者而不是发布者控制

时间:2016-01-23 14:10:07

标签: rebus

在线查看优先级队列的示例似乎标准是发布者设置消息的优先级。如果消息本身具有指示" Fire检测到的意义,那么这是有意义的。"。

如果优先权更多地由消费者决定怎么办?我的情况是这样,我有100个客户生成消息,客户A希望我有一个专门的消息消费者为他们的消息。每次这个场景发挥作用时,我都不想改变我所有的制作人。 (也许他们停止付钱,也许其他人也想要这个,也许我们用它来减轻一些devops问题......)

我有办法做到这一点吗?消费者可以扫描"队列中的所有消息和"传递"处理消息?

1 个答案:

答案 0 :(得分:1)

Rebus确实无法“扫描”消息或以任何其他方式预先知道哪些消息可用以便选择一个消息来处理。

通常,对于消息队列,您只需在收到消息时获得下一条消息。

如果你在需要处理消息时需要某种情报(对我来说听起来像这样),我建议你只需将消息排队为数据库中的“工作项”即可处理消息,然后你定期或不断选择下一个工作项目。

这样,您的工作人员在选择下一个工作项时可以执行任意复杂的逻辑 - 例如通过跳过那些没有支付的,按客户计划订购(例如,优先考虑“黄金客户”而不是“白银客户”)等。

这将使IMO具有额外的优势,它将使其成为应用程序逻辑中更突出的部分,我认为在这种情况下会很好。

听起来合理吗?