Я хочу понять, когда метод processRecords от IRecordProcessor вызывается из рабочего. Если мой предыдущий вызов processRecords еще не завершен, рабочий вызовет следующий processRecords? Будет ли рабочий запускать новые записи из кинезиса или он будет ждать окончания выполнения текущих записей.kinesis client worker logic
В принципе, я хочу долго ждать, если processRecords получает какое-то исключение, сохраняя записи во внешнем db, поскольку db не работает или какая-либо другая ошибка. Так что хотите подтвердить, что не будет никаких проблем в том случае, если рабочий не начнет получать новые записи до тех пор, пока ранее не завершит обработку?
В worker.java, он вызывает runProcessLoop и в том, что он вызывает shardConsumer.consumeShard() там называет checkAndSubmitNextTask() в том, что он проверяет readyForNextTask или нет. Если notReady, он не использует новые записи. Итак, как это возможно, рабочий получает новые записи без предыдущего процесса обработки документов. – user1846749
Если на вашей стороне есть временное отключение db (что предотвращает использование записей потребления); вы должны остановить свое потребительское приложение Kinesis до тех пор, пока оно не будет исправлено. Или есть второй подход: в заключительной ссылке моего ответа есть строка, объясняющая ваш вопрос: «Но если это не удается, обратите внимание на другое место, чтобы исследовать причину, по которой это не удалось». - Таким образом, вы можете обрабатывать записи, потребляемые во время отключения db позже, вручную. – az3