Изменения документа Гарантии доставки

Редактировал(а) Alexandr Fokin 2026/07/27 03:09

От версии 1.13
отредактировано Alexandr Fokin
на 2026/07/19 14:10
Изменить комментарий: Update document after refactoring.
К версии 1.10
отредактировано Alexandr Fokin
на 2026/07/19 13:20
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Родительский документ
... ... @@ -1,1 +1,1 @@
1 -Разработка.Брокеры сообщений.Apache Kafka.Kafka\. Механизмы.WebHome
1 +Разработка.Брокеры сообщений.Apache Kafka.Сценарии.WebHome
Содержимое
... ... @@ -10,62 +10,28 @@
10 10  |(% style="width:128px" %)(((
11 11  At‑Most‑Once
12 12  )))|(% style="width:1164px" %)Гарантия доставки не более одного раза.
13 -Гарантируется, то не будет дублей, но допускаются потери.|(% style="width:1164px" %)(((
14 -Без подтверждения доставки и повторных отправок (гарантирует отсутствие дублей), но сообщение может быть потеряно на фазе отправки (т.к. без подтверждения).
15 -
16 -{{code language="none"}}
17 -Acks = None
18 -MessageSendMaxRetries = 0
19 -{{/code}}
20 -)))|(% style="width:1164px" %)(((
21 -Сообщение коммитится сразу (без подтверждения), это гарантирует что не будет дублирования, но сообщение может быть потеряно на фазе получения (падение или timeout потребителя).
22 -
23 -{{code language="none"}}
24 -AutoOffsetReset = AutoOffsetReset.Earliest
13 +Гарантируется, то не будет дублей, но допускаются потери.|(% style="width:1164px" %)Без подтверждения доставки и повторных отправок (гарантирует отсутствие дублей), но сообщение может быть потеряно на фазе отправки (т.к. без подтверждения).
14 +\\Acks = None
15 +MessageSendMaxRetries = 0|(% style="width:1164px" %)Сообщение коммитится сразу (без подтверждения), это гарантирует что не будет дублирования, но сообщение может быть потеряно на фазе получения (падение или timeout потребителя).
16 +\\AutoOffsetReset = AutoOffsetReset.Earliest
25 25  ENABLE_AUTO_COMMIT = true
26 -{{/code}}
27 -)))
28 28  |(% style="width:128px" %)(((
29 29  At‑Most‑Once
30 30  )))|(% style="width:1164px" %)Гарантия доставки хотя бы один раз.
31 -Гарантируется, что не будет потерь, но возможны дубли.|(% style="width:1164px" %)(((
32 -1) Гарантия подтверждения доставки до брокера.
33 -
34 -{{code language="none"}}
35 -Acks = All
36 -EnableIdempotence = false
37 -{{/code}}
38 -
21 +Гарантируется, что не будет потерь, но возможны дубли.|(% style="width:1164px" %)1) Гарантия подтверждения доставки до про брокера.
39 39  В данном случае отправка может выполнится, но потеряется подтверждение отправки. В таком случае будет повторная отправка, которая приведет к дублированию на отправке.
23 +\\Acks = All
24 +EnableIdempotence = false
40 40  \\2) Дополнение. Наличие функции дедубликации в kafka.
41 41  Позволяет устранить дублирование на отправке. Kafka отслеживает повторную отправку и отбрасывает.
42 -
43 -{{code language="none"}}
44 -EnableIdempotence = true
27 +\\EnableIdempotence = true
45 45  MessageSendMaxRetries <> 0
46 -
47 -// влияет на идентификацию экземпляра
48 -// producer при переподключении.
49 -transactional.id
50 -{{/code}}
51 -)))|(% style="width:1164px" %)(((
52 -1) Использование ручного коммита после завершения обработки (транзакции БД).
53 -
54 -{{code language="none"}}
55 -AutoOffsetReset = AutoOffsetReset.Earliest
29 +\\transactional.id - влияет на идентификацию экземпляра producer при переподключении. |(% style="width:1164px" %)Использование ручного коммита после завершения обработки (транзакции БД).
30 +\\AutoOffsetReset = AutoOffsetReset.Earliest
56 56  ENABLE_AUTO_COMMIT = false
57 -{{/code}}
58 -
59 -Возможные проблемы:
60 -
61 -(((
62 -1. Дублирование на отправке.
63 -1. Не закомиченное смещение (падение consumer).
64 -1. Отвал consumer по timeout (долгая обработка, сообщение передано к другому consumer).
65 -
66 -2) TransactionalInbox.
67 -)))
68 -)))
32 +\\Может использоваться для дедупликации.
33 +TransactionalInbox.
34 +\\Падение consumer или отвал по timeout (долгая обработка)  может привести к отключению consumer по timeout. Это может провести к тому, что сообщение поступит на другой потребитель. В таком случае только TransactionalInbox.
69 69  |(% style="width:128px" %)(((
70 70  Exactly‑Once
71 71  )))|(% style="width:1164px" %)Гарантия доставки строго один раз.