Исходный код вики Обработка с транзакцией

Версия 2.1 от Alexandr Fokin на 2020/08/09 15:23

Последние авторы
1
2 Ситуация:
3 Имееться очередь, из которой приложение читает данные и обрабатывает их. Рассмотрим пример, что приложение имеет следующий цикл обработки сообщения:
4
5 1) Взять сообщение из очереди
6 2) Попытаться выполнить некоторый набор действий на основе данных из сообщения.
7 Отметим, что обработка сообщения может завершиться как успешно, так и с ошибкой.
8
9 Вариации:
10
11 1]
12 1) Получаем сообщение
13 2) Выполняем коммит (при следующем чтении на вход пойдет следующее сообщение)
14 3) Выполняем обработку
15
16 2]
17 1) Получаем сообщение
18 2) Выполняем обработку
19 3) Если п.2 выполнен успешно, то выполняем коммит (при следующем чтении на вход пойдет следующее сообщение)
20
21 Возможные проблемы
22 1 При потходе 1, мы теряем сообщение, в случае если оно его обработка не завершилась успешно.
23 2) При потходе 2, в случае, если после выполнения 2 пунтка наше приложение упадет (не успев выполнить пункт 3), то при повтроном запуске мы обработаем то-же самое сообщение второй раз.
24
25 Вопросы
26 1) Является ли повторная обработка одного и того же сообщения допустимой для нашей системы.
27 2) Является ли потеря данных из одного из сообщений критичной для нашей системы
28
29
30
31