Я читал эту статью о том, что один экземпляр приложения-функции Azure будет обрабатывать только один сеанс сообщений за раз. Поэтому, если мы рассмотрим план службы приложений с приложением-функцией Azure, он по-прежнему представляет собой один экземпляр. В этом случае, если у нас было три разных сеанса сообщений, нам нужно масштабировать три плана службы приложений, чтобы создать три экземпляра этого приложения-функции Azure для обработки этих сеансов сообщений.
Но мое предположение может быть неверным. Когда я разговариваю со своим коллегой, мы настраиваем автоматическое масштабирование плана службы приложений на масштабирование только одного экземпляра вручную. Это странно, потому что мы видим, что разные данные сеанса сообщений обрабатываются параллельно с этим одним экземпляром плана службы приложений на основе метки времени синхронизации. Как это возможно? Может быть, один экземпляр плана службы приложений может иметь несколько экземпляров своего приложения?
Я много читал из этой документации по сеансу сообщений и статьи dev.to.
https://learn.microsoft.com/en-us/azure/service-bus-messaging/message-sessions
https://dev.to/azure/ordered-queue-processing-in-azure-functions-4h6c
Один вычислительный экземпляр (функция в вашем случае) может обрабатывать более одного сеанса. По умолчанию для параллелизма сеансов (количество сеансов, которые могут обрабатываться одновременно) установлено значение 8. Однако порядок сохраняется в каждом сеансе, поэтому сообщения за сеанс доставляются в правильном порядке. Ваш код должен обрабатывать тот факт, что один и тот же код вызывается для разных сеансов, и обрабатывать его соответствующим образом. Если код не может этого сделать, он должен обрабатывать сеансы последовательно, уменьшая количество одновременных сеансов до 1, изменяя значение по умолчанию в host.json.