Можно ли применить транзакцию как к очереди Azure, так и к таблице Azure?
У меня есть последовательность из четырех шагов, которую я хочу вставить в транзакцию.
1) Получить сообщение из очереди Azure в WebJob
2) Выполните очень сложную работу, включая запуск GIT в фоновом режиме.
3) Обрабатывает некоторые данные из таблиц Azure, записывая результат в другую таблицу Azure.
4) Нажмите уведомление для следующего рабочего процесса через очередь Azure.
Я хочу, чтобы все это было транзакционным, чтобы любой сбой не позволял навсегда удалить сообщение из первого шага. Это возможно?
1 ответ
Azure не поддерживает это. Также, как правило, невозможно добиться однократной доставки сообщений очереди.
Вероятно, лучшее решение для вас - использовать хотя бы раз доставку (по умолчанию) и сделать обработку сообщений идемпотентной. Это означает, что обработчик сообщений должен определить, было ли сообщение уже обработано. Это можно сделать, проверив таблицы Azure, чтобы убедиться, что результаты уже есть.