Можно ли применить транзакцию как к очереди Azure, так и к таблице Azure?

У меня есть последовательность из четырех шагов, которую я хочу вставить в транзакцию.

1) Получить сообщение из очереди Azure в WebJob

2) Выполните очень сложную работу, включая запуск GIT в фоновом режиме.

3) Обрабатывает некоторые данные из таблиц Azure, записывая результат в другую таблицу Azure.

4) Нажмите уведомление для следующего рабочего процесса через очередь Azure.

Я хочу, чтобы все это было транзакционным, чтобы любой сбой не позволял навсегда удалить сообщение из первого шага. Это возможно?

1 ответ

Решение

Azure не поддерживает это. Также, как правило, невозможно добиться однократной доставки сообщений очереди.

Вероятно, лучшее решение для вас - использовать хотя бы раз доставку (по умолчанию) и сделать обработку сообщений идемпотентной. Это означает, что обработчик сообщений должен определить, было ли сообщение уже обработано. Это можно сделать, проверив таблицы Azure, чтобы убедиться, что результаты уже есть.

Другие вопросы по тегам