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

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

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

Сводка

Подробности

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