Изменения документа Диллема обработки сообщений
Редактировал(а) Alexandr Fokin 2024/06/12 16:21
<
>
отредактировано Alexandr Fokin
на 2020/08/09 15:32
на 2020/08/09 15:32
отредактировано Alexandr Fokin
на 2020/08/09 15:23
на 2020/08/09 15:23
Изменить комментарий:
К данной версии нет комментариев
Комментарий
-
Свойства страницы (2 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Название
-
... ... @@ -1,1 +1,1 @@ 1 - Диллема обработкисообщений1 +Обработка с транзакцией - Содержимое
-
... ... @@ -19,19 +19,12 @@ 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 27 2) Является ли потеря данных из одного из сообщений критичной для нашей системы 28 -3) Использование потхода номер 2 совместно с каким-либо более продвинутым механизмом транзакций. Т.е в случае падения приложения транзакция не будет завершена успешно. 29 -Но есть риск если у нас выполняются 2 действия: 30 -1) коммит транзакции в базе, 2) коммит сообщения. (или в порядке 2, 1) 31 -В случае падения приложения между указанными шагами, мы все равно можем получить 32 -либо потерю сообщения (закоммитили сообщение, но не завершили транзацию), 33 -либо повторную обработку (завершили транзакцию, но не закоммитил сообщение). 34 -Хоть и вероятность такого события в целом крайне мала. (зависит от системы) 35 35 36 36 37 37