В начале стрима бранч, с byteserde, в фильтрах проверять успешность десериализации в авро, если не успех пускать в ветку сломанных сообщений. Такое не пойдет?
В начале стрима бранч, с byteserde, в фильтрах проверять успешность десериализации в авро, если не успех пускать в ветку сломанных сообщений. Такое не пойдет?
В начале стрима бранч, с byteserde, в фильтрах проверять успешность десериализации в авро, если не успех пускать в ветку сломанных сообщений. Такое не пойдет?
выглядит как костыль, с сообщениями что угодно может случиться по дороге, проверять во всех точках ?
Видел где то ответ на SO от Matthias J. Sax что кафка тримы при обработке не должны бросать исключения в методах by design. Это уже учли. Но вот кейс с сериализацией во внутренний стейтстор пока без ответа. Единственный путь пока остается это исследовать ProductionExceptionHandle logandcontionue, но еще бы хотелось понимать к каким это может последствиям приветси
да, причина ошибки ясна. конкретно это попытка сеарелизовать BigDecimal co scale=0 в авро тип, который требует scale=2.
Понятно, что это нужно чинить и ловить на тестах.
Но вопрос в том, как защитить себя от такой ошибки на проде, при которой из-за одного битого сообщения возможна ситуация, когда приложение полностью блокируется и нет возмжности продолжить его работу из-за того что оно не может пропустить такое сообщение.
А что мешает взять cli и руками передвинуть офсет?
тут все выглядит как проблема runtime reliability, прикладный код здесь не причем. на кафке и так все приходится делать руками (например DLQ), а это вообще выглядит как блокер. а какая версия стримов, кстати Cliff