Commit c2ffb8fa by wutong

下载报告失败重试3次

parent 3528fbed
...@@ -165,7 +165,6 @@ public class AmazonAdProductJob extends PointJob { ...@@ -165,7 +165,6 @@ public class AmazonAdProductJob extends PointJob {
private void handleReport(String reportLocationUrl, JobAccountLog jobAccountLog, AmazonAdAuth amazonAdAuth){ private void handleReport(String reportLocationUrl, JobAccountLog jobAccountLog, AmazonAdAuth amazonAdAuth){
Response response = null; Response response = null;
GZIPInputStream gzin = null; GZIPInputStream gzin = null;
try{
Request request = new Request.Builder() Request request = new Request.Builder()
.url(reportLocationUrl) .url(reportLocationUrl)
.get() .get()
...@@ -174,10 +173,13 @@ public class AmazonAdProductJob extends PointJob { ...@@ -174,10 +173,13 @@ public class AmazonAdProductJob extends PointJob {
.addHeader("Amazon-Advertising-API-Scope", amazonAdAuth.getProfileId()) .addHeader("Amazon-Advertising-API-Scope", amazonAdAuth.getProfileId())
.addHeader("Content-Type", "application/json") .addHeader("Content-Type", "application/json")
.build(); .build();
for (int i = 0; i < 3; i++) {
try{
response = client.newCall(request).execute(); response = client.newCall(request).execute();
if (response.isSuccessful()) { if (response.isSuccessful()) {
gzin = new GZIPInputStream(response.body().byteStream()); gzin = new GZIPInputStream(response.body().byteStream());
List<AmazonAdProduct> amazonAdProductList = JSON.parseObject(gzin, new TypeReference<List<AmazonAdProduct>>(){}.getType()); List<AmazonAdProduct> amazonAdProductList = JSON.parseObject(gzin, new TypeReference<List<AmazonAdProduct>>() {
}.getType());
gzin.close(); gzin.close();
response.close(); response.close();
if (amazonAdProductList != null && amazonAdProductList.size() > 0) { if (amazonAdProductList != null && amazonAdProductList.size() > 0) {
...@@ -193,8 +195,8 @@ public class AmazonAdProductJob extends PointJob { ...@@ -193,8 +195,8 @@ public class AmazonAdProductJob extends PointJob {
dcBaseFinanceAmazonAdProduct.setExchangeRateUsd(CallBailunSystem.getExchangeRate(dcBaseFinanceAmazonAdProduct.getCurrency(), CurrencyType.USD.value(), jobAccountLog.getStartTime())); dcBaseFinanceAmazonAdProduct.setExchangeRateUsd(CallBailunSystem.getExchangeRate(dcBaseFinanceAmazonAdProduct.getCurrency(), CurrencyType.USD.value(), jobAccountLog.getStartTime()));
dcBaseFinanceAmazonAdProduct.setBjModifyTime(LocalDateTime.now()); dcBaseFinanceAmazonAdProduct.setBjModifyTime(LocalDateTime.now());
DcBaseFinanceAmazonAdProductExample example = DcBaseFinanceAmazonAdProductExample.newAndCreateCriteria().andCompanyIdEqualTo(dcBaseFinanceAmazonAdProduct.getCompanyId()).andAccountIdEqualTo(dcBaseFinanceAmazonAdProduct.getAccountId()).andCampaignIdEqualTo(dcBaseFinanceAmazonAdProduct.getCampaignId()).andAdGroupIdEqualTo(dcBaseFinanceAmazonAdProduct.getAdGroupId()).andSkuEqualTo(dcBaseFinanceAmazonAdProduct.getSku()).andReportDateEqualTo(dcBaseFinanceAmazonAdProduct.getReportDate()).example(); DcBaseFinanceAmazonAdProductExample example = DcBaseFinanceAmazonAdProductExample.newAndCreateCriteria().andCompanyIdEqualTo(dcBaseFinanceAmazonAdProduct.getCompanyId()).andAccountIdEqualTo(dcBaseFinanceAmazonAdProduct.getAccountId()).andCampaignIdEqualTo(dcBaseFinanceAmazonAdProduct.getCampaignId()).andAdGroupIdEqualTo(dcBaseFinanceAmazonAdProduct.getAdGroupId()).andSkuEqualTo(dcBaseFinanceAmazonAdProduct.getSku()).andReportDateEqualTo(dcBaseFinanceAmazonAdProduct.getReportDate()).example();
int i = mapper.updateByExampleSelective(dcBaseFinanceAmazonAdProduct,example); int update = mapper.updateByExampleSelective(dcBaseFinanceAmazonAdProduct, example);
if (i == 0) { if (update == 0) {
mapper.insertSelective(dcBaseFinanceAmazonAdProduct); mapper.insertSelective(dcBaseFinanceAmazonAdProduct);
} }
} }
...@@ -210,6 +212,7 @@ public class AmazonAdProductJob extends PointJob { ...@@ -210,6 +212,7 @@ public class AmazonAdProductJob extends PointJob {
jobAccountLog.setStartTime(overStartTime); jobAccountLog.setStartTime(overStartTime);
jobAccountLog.setEndTime(jobAccountLog.getStartTime().plusDays(jobAccountLog.getIntervalTime()).isAfter(LocalDateTime.now()) ? LocalDateTime.now() : jobAccountLog.getEndTime().plusDays(jobAccountLog.getIntervalTime())); jobAccountLog.setEndTime(jobAccountLog.getStartTime().plusDays(jobAccountLog.getIntervalTime()).isAfter(LocalDateTime.now()) ? LocalDateTime.now() : jobAccountLog.getEndTime().plusDays(jobAccountLog.getIntervalTime()));
jobAccountLog.setMessage("执行成功"); jobAccountLog.setMessage("执行成功");
break;
} else { } else {
String s = response.body().string(); String s = response.body().string();
log.warn("下载报告不成功:" + s); log.warn("下载报告不成功:" + s);
...@@ -218,7 +221,7 @@ public class AmazonAdProductJob extends PointJob { ...@@ -218,7 +221,7 @@ public class AmazonAdProductJob extends PointJob {
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();
log.error("调用获取AmazonADReportLocation错误:", e); log.error("调用获取AmazonADReportLocation错误:", e);
jobAccountLog.setMessage(reportLocationUrl +"调用获取AmazonADReportLocation错误:"+ ExceptionUtil.transform(e)); jobAccountLog.setMessage("第" + i +"次调用获取AmazonADReportLocation错误:"+ ExceptionUtil.transform(e));
} finally { } finally {
if(gzin != null) { if(gzin != null) {
try { try {
...@@ -232,11 +235,18 @@ public class AmazonAdProductJob extends PointJob { ...@@ -232,11 +235,18 @@ public class AmazonAdProductJob extends PointJob {
response.close(); response.close();
} }
} }
try {
Thread.sleep(SLEEP_WAIT);
} catch (InterruptedException e) {
jobAccountLog.setMessage("线程异常"+ ExceptionUtil.transform(e));
e.printStackTrace();
Thread.currentThread().interrupt();
}
}
} }
private String getReportLocation(String reportId, JobAccountLog jobAccountLog, AmazonAdAuth amazonAdAuth, String siteEn) { private String getReportLocation(String reportId, JobAccountLog jobAccountLog, AmazonAdAuth amazonAdAuth, String siteEn) {
Response response = null; Response response = null;
try{
Request request = new Request.Builder() Request request = new Request.Builder()
.url(switchSiteUrl(siteEn, reportId) + reportId) .url(switchSiteUrl(siteEn, reportId) + reportId)
.addHeader("Authorization", amazonAdAuth.getAccessToken()) .addHeader("Authorization", amazonAdAuth.getAccessToken())
...@@ -244,20 +254,13 @@ public class AmazonAdProductJob extends PointJob { ...@@ -244,20 +254,13 @@ public class AmazonAdProductJob extends PointJob {
.addHeader("Amazon-Advertising-API-Scope", amazonAdAuth.getProfileId()) .addHeader("Amazon-Advertising-API-Scope", amazonAdAuth.getProfileId())
.addHeader("Content-Type", "application/json") .addHeader("Content-Type", "application/json")
.build(); .build();
try{
response = client.newCall(request).execute(); response = client.newCall(request).execute();
if (response.isSuccessful()) { if (response.isSuccessful()) {
AmazonAdReportLocationResult reportLocationResult = JSON.parseObject(response.body().string(), AmazonAdReportLocationResult.class); AmazonAdReportLocationResult reportLocationResult = JSON.parseObject(response.body().string(), AmazonAdReportLocationResult.class);
if (reportLocationResult.getStatus().equals("SUCCESS")) { if (reportLocationResult.getStatus().equals("SUCCESS")) {
return reportLocationResult.getLocation(); return reportLocationResult.getLocation();
} }
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
jobAccountLog.setMessage("线程异常"+ ExceptionUtil.transform(e));
e.printStackTrace();
Thread.currentThread().interrupt();
}
return getReportLocation(reportId, jobAccountLog, amazonAdAuth, siteEn);
} else { } else {
String s = response.body().string(); String s = response.body().string();
log.warn("获取报告下载地址不成功:" + s); log.warn("获取报告下载地址不成功:" + s);
...@@ -271,7 +274,14 @@ public class AmazonAdProductJob extends PointJob { ...@@ -271,7 +274,14 @@ public class AmazonAdProductJob extends PointJob {
response.close(); response.close();
} }
} }
return null; try {
Thread.sleep(60000);
} catch (InterruptedException e) {
jobAccountLog.setMessage("线程异常" + ExceptionUtil.transform(e));
e.printStackTrace();
Thread.currentThread().interrupt();
}
return getReportLocation(reportId, jobAccountLog, amazonAdAuth, siteEn);
} }
private String postReportId(JobAccountLog jobAccountLog, AmazonAdAuth amazonAdAuth, String siteEn) { private String postReportId(JobAccountLog jobAccountLog, AmazonAdAuth amazonAdAuth, String siteEn) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment