У меня есть работа по быстрому изучению кафака, которая проходит через несколько операторов.Мне интересно, как лучше всего справляться с исключениями, которые происходят в середине.
Моя цель - создать централизованное место для обработки тех исключений, которые могут генерироваться различными операторами, и вот мое текущее решение:
Используйте ProcessFunction
и выведите от sideOutput
до context
в блоке перехвата, при условии, что есть исключение, и используйте отдельную функцию приемника для sideOutput
в конце, где он вызывает внешнюю службучтобы обновить статус другого связанного задания
Однако, мой вопрос заключается в том, что при этом мне все равно нужно вызвать collector.collect()
и передать нулевое значение, чтобы перейти к следующим операторам и перейти на последний этап.где sideOutput
перейдет в отдельную функцию приемника.Это правильный способ сделать это?
Кроме того, я не уверен, что на самом деле произойдет, если я не вызову collector.collect()
внутри оператора, будет ли он зависать там и вызывать утечку памяти?