Убить процесс через определенное количество времени в Apache Beam - PullRequest
0 голосов
/ 01 марта 2019

Для каждой новой записи пользователя в таблице BigQuery я должен отправить электронное письмо этому пользователю.

Я использую Apache Beam для получения этих записей из BQ, и для каждой из них я отправляю запрос в веб-службу RESTful, чтобы отправить электронное письмо и жду ответа.

Проблема в том, что когда количество запросов становится слишком большим, скажем, миллион, ответ от веб-службы приходит очень поздно и задание Apache Beam находится в зависшем состоянии.

Есть ли способ просто перестать ждать ответа, возможно, через минуту, и продолжить другие запросы в Apache Beam?Или веб-службе будет лучше отправлять ответ с истечением времени ожидания через минуту?

Я думаю, что последний вариант имеет смысл, но мне просто интересно узнать, является ли ожидание вариантом, учитывающим вещиработать параллельно в Apache Beam.

1 Ответ

0 голосов
/ 04 марта 2019

Необходимо переопределить свойства HttpClient с помощью пользовательских параметров времени ожидания:

HttpParams.setConnectionTimeout(params, connectionTimeoutMillis);
HttpParams.setSoTimeout(params, socketTimeoutMillis);

Первый параметр позволяет указать время ожидания для установления первоначального подключения, а второй - указать максимальный период времени, в течение которогосокет будет ждать пока данные не будут отправлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...