В этом блоке ниже я попытался использовать пакетную запись
private void save() {
Pong pong = conn.ping();
if (pong != null && pong.isGood()) {
LogUtil.info("InfluxDBStreamOutputStep",
String.format("prepare to write %d line datas", batchPoints.getPoints().size()));
conn.batchInsert(batchPoints);
}
}
, и следующий блок устанавливает соединение, и я также добавил попытку перехвата, чтобы восстановить соединение, когда оно прерывается или произошла какая-либо ошибка
@Override
protected void processClose() {
try {
if (batchPoints != null && batchPoints.getPoints() != null
&& !batchPoints.getPoints().isEmpty()) {
long start = System.currentTimeMillis();
try {
save();
} catch(InfluxDBException e) {
if (conn != null) {
conn.close();
}
setupConnection();
save();
}
}
}
После того, как я добавил блок кода перестроения, он может продолжать работать в течение пяти дней, но сегодня возникла исключительная ситуация, аналогичная дням до "сломанной трубы".Я посмотрел на причину сломанного канала и в ответе на чей-то блог сказал, что сломанный канал произошел, когда клиент получил первый пакет во время записи данных.
В заключение, кто-нибудь знает что-нибудь о решении иливстречали этот вопрос раньше?