Могу ли я удалить сообщение на сервере kafka, если оно не использовалось? - PullRequest
0 голосов
/ 14 июля 2020

Если у меня есть идентификатор сообщения, возможно ли для клиента удалить сообщение kafka, которое находится на топи c и все еще не используется потребителем.

1 Ответ

0 голосов
/ 14 июля 2020

Нет, как правило (для клиента) невозможно удалить отдельное сообщение из топи Kafka c.

Удаление сообщений из топи Kafka c осуществляется через топи c конфигурация уровней cleanup.policy. Согласно документации :

Строка, которая может быть либо «удалить», либо «сжать». Эта строка обозначает политику хранения для использования в старых сегментах журнала. Политика по умолчанию («удалить») будет отбрасывать старые сегменты, когда будет достигнут предел их срока хранения или размера. «Компактный» параметр включает сжатие журнала на topi c.

Режим «удаления» основан на ограничении времени или размера байта, тогда как «компактный» режим гарантирует, что у вас есть как минимум одно сообщение для того же ключа, доступное в топи c.

В качестве обходного пути в вашем случае я могу придумать следующее:

  • включить сжатие журнала для топи c
  • убедитесь, что вы определили отдельный ключ для каждого отдельного сообщения в топах c
  • если вы планируете удалить одно конкретное сообщение, отправьте сообщение в топи c с тем же ключом и «нулевым» значением. В этом случае это сообщение будет в конечном итоге удалено с помощью очистителя уплотнения.

Подробное объяснение сжатия журнала дано в документации Kafka .

...