← Cloudflare Queues / queues / reference
Гарантии доставки
Гарантии доставки определяют, насколько строго система обмена сообщениями обеспечивает доставку обрабатываемых сообщений.
Чем строже гарантии доставки сообщений, тем больше проверок и подтверждений требуется системе, чтобы гарантировать доставку сообщений, либо тем больше состояния ей нужно хранить, чтобы сообщение доставлялось не более заданного числа раз. Это увеличивает задержку в системе и снижает её общую пропускную способность. Для подтверждения каждого сообщения может потребоваться дополнительное внутреннее подтверждение и соответствующее число дополнительных обращений туда и обратно.
- Queues предоставляет как минимум один раз доставку по умолчанию для повышения надёжности.
- Это означает, что доставка сообщений гарантируется как минимум один раз, а в редких случаях сообщение может быть доставлено более одного раза.
- Для большинства приложений это оптимальный баланс между сохранностью всех сообщений и минимальной сквозной задержкой, поскольку доставка exactly once в любой системе обмена сообщениями связана с дополнительными издержками.
Если повторная обработка одного и того же сообщения может привести к нежелательному поведению, генерируйте уникальный ID при записи сообщения в очередь и используйте его как первичный ключ при вставке в базу данных и (или) как ключ идемпотентности для устранения дублей после обработки. Например, если использовать этот ключ идемпотентности как ID в вышестоящем email API или платёжном API, эти сервисы смогут сами отклонять дубликаты, и вашему приложению не придётся хранить дополнительное состояние.