Browse Source

完善代码

master
review512jwy@163.com 2 weeks ago
parent
commit
b811e5aaa1
  1. 10
      src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java
  2. 7
      src/main/java/com/dashboard/aws/lambda/service/MySQLService.java

10
src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java

@ -27,7 +27,7 @@ public class MySQLBatchToS3Handler implements RequestHandler<Map<String, Object>
private static final Logger logger = LoggerFactory.getLogger(MySQLBatchToS3Handler.class);
private static final String DB_SCHEMA = System.getenv("DB_SCHEMA");
private static final int INSERT_BATCH_SIZE = Integer.parseInt(System.getenv("INSERT_BATCH_SIZE"));
private static final int DB_2_S3_BATCH_SIZE = Integer.parseInt(System.getenv("DB_2_S3_BATCH_SIZE"));
private static final String CUTOFF_DATE_STR = System.getenv("CUTOFF_DATE");
private static final ZoneId TOKYO_ZONE = Constants.TOKYO_ZONE;
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
@ -129,7 +129,7 @@ public class MySQLBatchToS3Handler implements RequestHandler<Map<String, Object>
* 循环查询批次数据直到没有数据或遇到截止日期或超时
*/
private void processTable(String table, long cutoffUploadAt, long overallStartTime, FailedRecords failedRecords) {
logger.info("[{}][{}] start processing batch size: {}, cutoff upload_at: {}", DB_SCHEMA, table, INSERT_BATCH_SIZE, cutoffUploadAt);
logger.info("[{}][{}] start processing batch size: {}, cutoff upload_at: {}", DB_SCHEMA, table, DB_2_S3_BATCH_SIZE, cutoffUploadAt);
long tableStartTime = System.currentTimeMillis();
Long lastProcessedId = null;
@ -148,7 +148,7 @@ public class MySQLBatchToS3Handler implements RequestHandler<Map<String, Object>
// 查询当前批次数据
List<Map<String, Object>> rows = null;
try {
rows = mysqlService.queryFirstNByIdGreaterThan(DB_SCHEMA, table, INSERT_BATCH_SIZE, lastProcessedId);
rows = mysqlService.queryFirstNByIdGreaterThan(DB_SCHEMA, table, DB_2_S3_BATCH_SIZE, lastProcessedId);
} catch (Exception e) {
logger.error("[{}][{}] query failed", DB_SCHEMA, table, e);
break;
@ -198,7 +198,7 @@ public class MySQLBatchToS3Handler implements RequestHandler<Map<String, Object>
// 如果当前批次没有有效数据,继续下一批
if (grouped.isEmpty()) {
logger.info("[{}][{}] no valid data in this batch", DB_SCHEMA, table);
if (validCount < INSERT_BATCH_SIZE || reachedCutoff) {
if (validCount < DB_2_S3_BATCH_SIZE || reachedCutoff) {
shouldContinue = false;
} else {
lastProcessedId = maxIdInBatch;
@ -276,7 +276,7 @@ public class MySQLBatchToS3Handler implements RequestHandler<Map<String, Object>
}
// 确定是否继续:只有全部成功且当前批次是完整批次且没有达到cutoff时才继续
if (anyFailure || validCount < INSERT_BATCH_SIZE || reachedCutoff) {
if (anyFailure || validCount < DB_2_S3_BATCH_SIZE || reachedCutoff) {
shouldContinue = false;
}
}

7
src/main/java/com/dashboard/aws/lambda/service/MySQLService.java

@ -137,15 +137,14 @@ public class MySQLService {
// 执行批量插入
int[] results = ps.executeBatch();
batchInserted = 0;
for (int r : results) {
batchInserted += r;
}
// 提交当前批次事务,每个批次独立事务,失败不影响其他批次
conn.commit();
//成功才加到 total
batchInserted = results.length; // 用批次大小
total += batchInserted;
batchSuccess = true;
if (retryCount == 0) {

Loading…
Cancel
Save