Конструктор RichFunction
вызывается только на стороне клиента. Если что-то должно быть фактически выполнено в кластере, это должно быть сделано в open
.
open
также необходимо использовать, если вы хотите получить доступ к параметрам для вашего задания Flink или RuntimeContext
(для состояние, счетчики и др. c.). Когда вы используете open
, вы также хотите использовать close
в симметричном c режиме.
Итак, чтобы ответить на ваш вопрос: ваш DBConnection
должен быть инициализирован только в open
. В конструкторе вы обычно просто сохраняете параметры константы задания в полях, например, как получить доступ к ключу ваших записей, если ваш приемник может быть повторно использован в нескольких проектах с различными структурами данных.