Поделиться через


Гарантии доставки сообщений

Orleans Гарантии доставки сообщений по умолчанию не более одного раза. При необходимости, если настроено выполнение повторных попыток при истечении времени ожидания, Orleans вместо этого предоставляется по крайней мере один раз доставка.

Более подробно:

  • Каждое сообщение имеет Orleans автоматическое время ожидания (точное время ожидания можно настроить). Если ответ не поступает вовремя, возвращенный возвращается Task с исключением времени ожидания.
  • Orleans можно настроить автоматическое повторение при тайм-ауте. По умолчанию он не выполняет автоматические повторные попытки.
  • Код приложения также может выполнять повторные попытки при истечении времени ожидания.

Orleans Если система не настроена на автоматическое повторение (параметр по умолчанию) и приложение не выполняет повторную отправку сообщений, Orleans обеспечивает доставку сообщений по крайней мере один раз. Сообщение будет доставлено один раз или нет. Он никогда не будет доставлен дважды.

В системе с повторными попытками (средой выполнения или приложением) сообщение может поступать несколько раз. Orleans В настоящее время ничего не делает, чтобы безопасно хранить сообщения, которые уже прибыли и подавляют вторую доставку. (Мы считаем, что это было бы довольно дорогостоящим.) Поэтому в системе с повторными попытками Orleans не гарантируется по крайней мере один раз доставки.

Если вы продолжаете повторять потенциально неограниченное время, сообщение в конечном итоге прибудет, обеспечивая по крайней мере однократную гарантию доставки. Обратите внимание, что "в конечном итоге прибудет" является то, что среда выполнения должна гарантировать. Он не приходит бесплатно просто сама по себе, даже если вы продолжаете повторять. Orleans обеспечивает конечную доставку, так как зерна никогда не попадают в любое постоянное состояние сбоя, и неудачное зерно в конечном итоге будет повторно активировано на другом сило.

Таким образом, чтобы свести итоги: в системе без повторных попыток Orleans гарантируется доставка сообщений по крайней мере один раз. В системе с бесконечными повторными попытками Orleans гарантируется по крайней мере один раз (и не гарантируется по крайней мере один раз).

Внимание

В техническом отчете Orleans мы случайно упоминание параметр 2-го с автоматическими повторными попытками. Мы забыли упоминание, что по умолчанию без повторных попыток обеспечивает Orleans доставку по крайней мере один раз.