Изменения документа Диллема обработки сообщений

Редактировал(а) Alexandr Fokin 2024/06/12 16:21

<
От версии < 5.2 >
отредактировано Alexandr Fokin
на 2023/01/23 23:55
К версии < 2.1 >
отредактировано Alexandr Fokin
на 2020/08/09 15:23
>
Изменить комментарий: К данной версии нет комментариев

Комментарий

Подробности

Свойства страницы
Название
... ... @@ -1,1 +1,1 @@
1 -Диллема обработки сообщений
1 +Обработка с транзакцией
Родительский документ
... ... @@ -1,1 +1,1 @@
1 -Архитектура и модели.Модели.Конвейер и Запрос-Ответ.WebHome
1 +Архитектура и модели.WebHome
Содержимое
... ... @@ -19,25 +19,14 @@
19 19  3) Если п.2 выполнен успешно, то выполняем коммит (при следующем чтении на вход пойдет следующее сообщение)
20 20  
21 21  Возможные проблемы
22 -1) При потходе 1, мы теряем сообщение, в случае если его обработка не завершилась успешно.
22 +1 При потходе 1, мы теряем сообщение, в случае если оно его обработка не завершилась успешно.
23 23  2) При потходе 2, в случае, если после выполнения 2 пунтка наше приложение упадет (не успев выполнить пункт 3), то при повтроном запуске мы обработаем то-же самое сообщение второй раз.
24 24  
25 25  Вопросы
26 26  1) Является ли повторная обработка одного и того же сообщения допустимой для нашей системы.
27 -2) Является ли потеря данных из одного из сообщений критичной для нашей системы.
28 -3) Возможно в нашей системе производитель сообщение, генерирует сообщенеи повторно через некоторой промежуток времени, если фиксирует, что предыдущее сообщение не было обработано.
27 +2) Является ли потеря данных из одного из сообщений критичной для нашей системы
29 29  
30 30  
31 -Более надежное, но более тяжелое решение:
32 -Использование потхода номер 2 совместно с каким-либо более продвинутым механизмом транзакций. Т.е в случае падения приложения транзакция не будет завершена успешно.
33 -Но есть риск если у нас выполняются 2 действия:
34 -1) коммит транзакции в базе, 2) коммит сообщения. (или в порядке 2, 1)
35 -В случае падения приложения между указанными шагами, мы все равно можем получить
36 -либо потерю сообщения (закоммитили сообщение, но не завершили транзацию),
37 -либо повторную обработку (завершили транзакцию, но не закоммитил сообщение).
38 -Хоть и вероятность такого события в целом крайне мала. (зависит от системы)
39 39  
40 40  
41 41  
42 -
43 -