При использовании Azure ServiceBus Topi c Подписка с несколькими конкурирующими потребителями , я могу заставить потребителей проходить циклический перебор, только если для PrefetchCount SubscriptionClient не установлено .
При указании любого PrefetchCount> 1, а затем при низкой нагрузке, первый получатель, который получил сообщение, похоже, получает сходство с сообщениями, так что ВСЕ сообщения принимаются только этим потребителем.
Если я добавлю нагрузку (т. Е. Добавлю больше сообщений одновременно при подписке), тогда другие потребители получат некоторые сообщения, но загрузка распределяется неравномерно.
Использование очереди (и QueueClient ), сообщения более или менее равномерно распределяются среди клиентов - с любым PrefetchCount.
Примечание:
- MaxConcurrentCalls является «высоким» значением ( 200)
- Я использую режим PeekLock во всех случаях;
- Подписки используют CorrelationFilter
This Topi c -Подписка поведение мне не кажется правильным ... Я предполагал, что механизм конкурирующих потребителей клиента очереди и подписки должен быть согласованным.
Что я мог настроить неправильно? Или это ожидаемое поведение?