【发布时间】:2020-01-09 14:47:12
【问题描述】:
当使用具有多个竞争消费者的 Azure ServiceBus 主题订阅时,我只能在 SubscriptionClient 的 PrefetchCount 未设置时让消费者循环。
当指定任何 PrefetchCount > 1 时,在低负载下,第一个碰巧收到消息的消费者似乎被赋予了与消息的关联性,这样所有消息都只能由该消费者接收。
如果我添加负载(即在订阅中同时抛出更多消息),那么其他消费者确实会收到 一些 消息,但负载分布不均。
使用 Queue(和 QueueClient),消息或多或少均匀地分配给客户端 - 使用任何 PrefetchCount。
注意:
- MaxConcurrentCalls 是一个“高”值 (200)
- 我在所有情况下都使用 PeekLock 模式;
- 订阅使用 CorrelationFilter
这种主题订阅行为对我来说似乎不正确......我假设队列和订阅客户端竞争消费者机制应该是一致的。
我可能没有正确配置什么?还是这是预期的行为?
【问题讨论】:
标签: .net azure servicebus azure-servicebus-topics