В настоящее время у меня есть следующий поток:
- внешнее приложение
- создает входные данные и записывает их в файл BLOB-объектов Azure,
- записывает сообщение с метаданными в очередь хранилища Azure,
- AppLogic подключается к очереди и инициирует новый экземпляр контейнера с работником,
- новый экземпляр контейнера ACI копирует входной файл из файла BLOB-объектов Azure, обрабатывает его (в основном с использованием ImageMagick), сохраняет выходные файлы в файле BLOB-объектов Azure,
и затем закрывается.
Работает нормально, но теперь я бы хотел защитить поток от дубликатов.
Моей первой идеей было изменить очередь на служебную шину Azure, которая может проверять уникальность ключа. Тогда я начал думать, стоит ли мне изменить порядок и сначала добавить сообщение в очередь, а затем (если оно не повторяется) написать blob? Но в том случае, когда скрипт скрепляет стартовый контейнер, потому что отслеживание очереди занимает слишком раннее место. Может быть, мне следует использовать триггер создания файла BLOB-объекта Azure (подойдет ли Microsoft.Storage.Blob) Но зачем вообще использовать очередь в таком случае? Наверное, Blob Table Storage будет лучше, я не прав?
Конечный поток:
- внешнее приложение
- записывает сообщение с метаданными в таблицу хранения Azure,
- создает входные данные и записывает их в файл BLOB-объектов Azure,
- AppLogic отслеживает Microsoft.Storage.BlobCreated, считывает метаданные из таблицы хранения Azure и запускает новый экземпляр контейнера с работником,
- без изменений.
Подойдет ли это? Или какое решение лучше?