我正在评估使用RabbitMQ作为消息队列代理/框架来替换内部构建的消息队列(如果重要的话,请使用C#)。
我将拥有N个线程的服务,每个线程都是特定队列的使用者。可能有多个线程共享同一队列。我相信我会为每个使用者使用prefetch属性1,以便使用者线程一次接收1条消息。
让我们举一个例子,我有4个使用者线程,所有线程都看一个名为“报告”的队列。可以为不同的“客户”运行这些报告。我要避免允许客户垄断队列,所以可以说我不希望任何一个客户在给定的时间使用超过2个消费者(如果有其他排队的消息正在等待)。如果没有其他等待其他客户排队的消息,那么我想允许所有消费者都符合条件。
到目前为止,由于我对RabbitMQ的了解有限,所以我相信我可以使用主题模式来指示客户,也可以使用自定义标头。
我想知道是否有一种设计模式可以支持为每个唯一的标头/客户值定义一个限制。
我不是要任何人为我编写代码,我只是想知道在我浪费大量时间提高工作效率之前,是否有人可以提前告诉我“不行,这是行不通的”。 >
如果我的问题没有道理,请告诉我,我将提供更多信息进行更新。预先感谢。