Будущие метаданные производителя Kafka в обратном вызове
В моем приложении при отправке сообщений я использую метаданные в обратном вызове, чтобы сохранить смещение записи для будущего использования. Однако иногда metadata.offset() возвращает -1, что усложняет ситуацию позже. Почему это происходит, и есть ли способ получить смещение без использования темы, чтобы найти его.
Изменить: я в настоящее время на Ack 0, когда я перехожу на Ack 1, у меня больше нет этих ошибок, однако моя производительность резко падает. От 100к сообщений за 10 сек до 1 мин.
1 ответ
acks=0 Если установлено в ноль, то производитель вообще не будет ждать никакого подтверждения от сервера. Запись будет немедленно добавлена в буфер сокета и будет считаться отправленной. Невозможно гарантировать, что сервер получил запись в этом случае, и конфигурация повторных попыток не вступит в силу (так как клиент обычно не будет знать о каких-либо сбоях). Смещение, возвращаемое для каждой записи, всегда будет установлено равным -1.
Это не совсем так, поскольку из 100 тыс. Сообщений я получил 95 тыс. Со смещением, но я думаю, что это нормально. Еще нужно будет найти другое решение, чтобы получить смещение с ack=0