люди из чата с ней скорее всего сталкивались.
Есть сервис на Go, который обрабатывает сообщения из Kafka. И какая то часть сообщений не может быть обработана, потому что в самих сообщениях есть данные, которые текущий код обработать не может (т.е. дело не в бекинг сервисах и ретраи не помогут).
На вскидку есть решения в виде:
* падать приложению и стопать обработку, до тех пор пока код не научится с ними работать
* использовать паттерн Dead Letter Queue - пересылать все не понятное в отдельную очередь и идти дальше.
Может еще какие то варианты знаете/используете, как можно не блокировать обработку всех сообщений, но и не потерять информация о том, кто был отброшен?
Перекладывать в отдельный топик, т.е. dead letter queue. Если будете падать - система будет очень нестабильной и требующей ручного вмешательства каждый раз
в отдельной очереди такие сообщения могут банально протухнуть, поэтому имеет смысл сохранять такие сообщения в отдельную базу с возможностью переотправки сообщения в очередь из апи / интерфейса
Тут варианта 3: 1. Гонять их раунд робином 2. Просто пропускать 3. Отдельный топик Правильный выбор зависит от бизнес-логики. Не очень понятно, что вы потом будете делать с этими мёртвыми сообщениями в отдельном топике?
Обсуждают сегодня