Я пытаюсь справиться с ситуацией, показанной на следующем рисунке.
![enter image description here](https://i.stack.imgur.com/xRPod.png)
У нас есть несколько клиентов = производителей (также 1 клиент = 1 до N производителей). Нам нужно обрабатывать данные от каждого производителя справедливо (= отдельный вариант будет лучшим вариантом), потому что может случиться так, что один производитель отправит нам огромное количество данных, и если для всех производителей будет только одна очередь, то остальные производители будет заблокирован. Поэтому мы должны гарантировать, что ни один производитель не будет заблокирован и справедливо обслужен потребителями.
Идеальная схема состояла бы в том, что у каждого производителя была бы своя очередь и собственный потребитель (асинхронно ожидающий любое сообщение, которое будет отправлено в очередь). Эта схема представлена на картинке выше.
Проблема в том, что количество производителей будет динамически расти с увеличением количества клиентов, поэтому нам необходимо динамически создавать очереди и потребителей.
Более того, нам нужно справиться с другими трудностями с данными от производителей. Нам необходимо убедиться, что более старые данные от источника A будут обработаны раньше, чем более новые данные от того же производителя A. (Примечание: производители независимы друг от друга, поэтому более новые данные от производителя B могут быть обработаны до более старых данных от производителя A.)
Согласно моим исследованиям, не будет проблем с использованием хранилища Azure Queue в качестве Queue (это не проблема для динамического создания очередей с помощью queue.CreateIfNotExists();
). НО я не знаю, что использовать в качестве правильного потребителя. Я знаю, что существует множество служб Azure, например: функция Azure, веб-работа Azure, концентратор событий Azure и т. Д.
Мой вопрос: Каков наилучший вариант для этого варианта использования в качестве потребителей?
Нам нужно обслуживать очереди настолько справедливо, насколько это возможно, чтобы ни одна очередь производителя не была заблокирована другими.
Заранее спасибо за любые советы!