Azure Service Bus中发布者的公平排队

时间:2016-07-29 02:13:45

标签: azure azureservicebus azure-servicebus-queues

我正在寻找一种管理来自多个发布商的消息流的方法。

这是一个人为的例子。

我的每个发布商都提交的作业可以分解成可以按任何顺序处理的较小组件。每个组件都需要几秒钟的时间来处理。

Publisher A将作业提交到由1000个较小组件组成的队列。 Consumer X订阅队列并开始处理队列消息并将结果发送到结果队列。

在完成工作的一半时,Publisher B提交了一份包含1000个组件的作业。

我希望Consumer X现在在发布者A和发布者B的消息之间切换,以便发布者B在接收结果之前不需要等待第一个作业完成,而/发布者A现在发布者B只是更慢地收到结果有一份工作。 (类似于网络中的公平排队)

这应该适合任意数量的发布者。

如果我然后扩大消费者,每个消费者应该以相同的方式行事。他们不需要协调他们的行动以保证公平的排队,只是粗略的近似是好的。

在Service Bus中是否有处理此问题的模式?我应该使用另一种天蓝色的技术吗?

1 个答案:

答案 0 :(得分:1)

您可以创建一个主题来发送较小的组件消息。

在该主题上创建多个订阅。例如2,并配置每个过滤50%的消息。订阅1将包含来自发布者A的消息,而订阅2将包含来自发布者B的消息。 (here's how

然后为每个订阅创建一个阅读器,从而能够使用多个订阅者同时处理来自多个发布者的消息。