--- aliases: - транзакционный аутбокс tags: - зрелость/🌱 date: "[[2023-10-26]]" zero-link: - "[[00 Архитектура ПО]]" parents: linked: --- Транзакционный аутбокс - это шаблон проектирования программного обеспечения, который обеспечивает надежную обработку сообщений в распределенной системе. Этот шаблон обеспечивает гарантию "точно-однажды" (exactly-once) обработки сообщения, что означает, что сообщение будет обработано только один раз, независимо от возможных сбоев или перезапусков системы. Основная идея транзакционного аутбокса заключается в том, что каждое действие, которое требует отправки сообщения в распределенной системе, должно быть выполнено в рамках одной транзакции вместе с действием записи этого сообщения в "аутбокс" (исходящий ящик) в базе данных. Затем отдельный процесс или служба ("диспетчер аутбокса") периодически сканирует аутбокс и отправляет сообщения. Если сообщение успешно отправлено, оно удаляется из аутбокса. Этот шаблон помогает обеспечить надежность и устойчивость к сбоям в распределенных системах, где сетевые проблемы, сбои оборудования и другие проблемы могут привести к потере или дублированию сообщений. Транзакционный аутбокс гарантирует, что каждое сообщение будет обработано точно один раз, даже если произойдет сбой или перезапуск системы.