170 похожих чатов

Подскажите плз по kafka либе sarama, как правильно сделать коммит

вручную если
config.Consumer.Offsets.AutoCommit.Enable = false
? Чем отличаются
session.MarkMessage
и
session.Commit
? Почему вызов Commit ни на что не влияет?

7 ответов

34 просмотра

config.Consumer.Offsets.AutoCommit.Enable настройка отвечает за автокоммит помарченных оффсетов в фоне соответственно обычно эту настройку оставляют включенной, а обработанные оффсеты помечают через session.MarkMessage, чтобы потом в фоне они могли быть закомиченны

а Commit - сохраняет в брокер помеченные оффсеты, если вы ничего не пометили, то и сохранять нечего https://github.com/Shopify/sarama/blob/master/consumer_group.go#L519

Konstantin- Автор вопроса
Andrei 🦉 Sergeev
а Commit - сохраняет в брокер помеченные оффсеты, ...

Почему то если автокоммит выключен достаточно только помарчить оффсеты и при следующем запуске эти сообщения уже не придут

Konstantin
Почему то если автокоммит выключен достаточно толь...

ну если вы сами Commit вызвали после того, как помарчили сообщения, то оно так и должно работать если не вызывали, то можно посмотреть в исходники, в Close вполне может быть явный вызов Commit а вообще какая у вас задача? зачем вам нужно имеено руками комитить, а не двигать оффсет?

Konstantin- Автор вопроса
Andrei 🦉 Sergeev
ну если вы сами Commit вызвали после того, как пом...

в том то и дело что Commit не вызываю. Задача валить сервис при ошибке, чтобы при следующей итерации сервиса попробовать еще раз обработать сообщение, сейчас у нас логика реализована на либе confluent-kafka-go, но я присматриваюсь в сторону sarama, хочу переписать логику на эту либу, но смутил этот критичный момент с автокоммитом, притом что логика работы не понятна не только мне: https://github.com/Shopify/sarama/issues/1570

Konstantin
в том то и дело что Commit не вызываю. Задача вали...

а в чем проблема не помечать оффсет, пока сообщение не будет обработано?

Konstantin- Автор вопроса
Andrei 🦉 Sergeev
ну если вы сами Commit вызвали после того, как пом...

Да, там реально в close вызывается flushToBroker, спасибо за наводку

Похожие вопросы

Обсуждают сегодня

А чем вам питонисты не угодили?😂
.
79
Язык Си можно выучить за день? По книжке ANSI C на 230 страниц
Vincent Vegan
29
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Dim Dim, [02.07.2024 11:07] DB 0x62 Dim Dim, [02.07.2024 11:07] DB 0x66 Dim Dim, [02.07.2024 11:07] кто пояснит что это?
Dim Dim
14
Ошибка: segmentation fault (core dumped) Код: pastebin.com/BEsNNSSV Сообщение от компилятора: отсутствует ОС: Arch Linux Ядро: x86_64 Linux 6.9.7-arch1-1 Процессор: Intel Cele...
sec
4
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Кстати, я тут еще с одной темой столкнулся, вот учу я C++, на таком то ресурсе, а остальные постоянно советуют практиковаться, что то писать, проекты, но как писать если вот т...
aaswq1
7
Добрый день, чат. Мне в очередь из других RabbitMQ по shovel валятся метрики в формате текста для Prometheus. Помогите пожалуйста подружить RabbitMQ и Prometheus, чтобы он (...
Aleksey
4
@ahndmn @ayaw0_0 здарова, на чем пишете?
Aiwan \ (•◡•) / _bot
7
Карта сайта