payuploadsender.java.svn-base
来自「项目支付宝批量打款,采用httpclient+spring +quarz实现.」· SVN-BASE 代码 · 共 118 行
SVN-BASE
118 行
package com.szhelper.pay.quartz;
import java.io.IOException;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.szhelper.pay.ApplicationContextWrapper;
import com.szhelper.pay.Constants;
import com.szhelper.pay.quartz.base.BaseSender;
import com.szhelper.pay.quartz.base.Message;
import com.szhelper.pay.quartz.message.PayUploadMessage;
import com.szhelper.pay.quartz.util.FileCSVHelper;
import com.szhelper.pay.quartz.util.FileZipHelper;
import com.szhelper.pay.service.IPayProxyService;
import com.szhelper.pay.service.impl.PayProxyServiceImpl;
public class PayUploadSender extends BaseSender {
private static Log logger = LogFactory.getLog(PayUploadSender.class);
private long threadSleepPeriod = 0;
private int clientConnTimeout;
private Map uploadPayConfig;
private static BaseSender instance = new PayUploadSender();
private String backupPath;
public static BaseSender getInstance() {
return instance;
}
private PayUploadSender() {
uploadPayConfig = (Map) ApplicationContextWrapper.getInstance()
.getBean("uploadPayConfig");
threadSleepPeriod = Long.parseLong(uploadPayConfig.get(
"jobSleepOfUpload").toString());
logger.info(threadSleepPeriod);
clientConnTimeout = Integer.parseInt(uploadPayConfig.get(
"clientConnTimeout").toString());
backupPath = uploadPayConfig.get("backupPath").toString();
}
public void run() {
while (!runFlag) {
synchronized (this) {
if (!queue.empty()) {
PayUploadMessage message = (PayUploadMessage) queue.pop();
try {
if (!send(message)) {
message.autoIncreaseSentTimes();
if (message.isAllowSend()) {
queue.push(message);
} else {
message.setStatus(Constants.SENT_RESP_STATUS_E);
message.getPostMethod().releaseConnection();
rollbackSendStatus(message);
}
}
} catch (Exception ex) {
logger.error(ex);
}
}
try {
// Thread.sleep(1L * 1000L);
Thread.sleep(threadSleepPeriod);
} catch (Exception e) {
logger.error(e);
}
}
}
}
public boolean send(Message msg) {
PayUploadMessage message = (PayUploadMessage) msg;
boolean flag = false;
HttpClient client = new HttpClient();
try {
logger.info("began to upload file to alipay...");
client.setConnectionTimeout(clientConnTimeout);
int responseCode = client.executeMethod(message.getPostMethod());
String respMsg = message.getPostMethod().getResponseBodyAsString();
logger.info("alipay upload response code:" + responseCode);
logger.info("alipay upload response message:" + respMsg);
if (respMsg != null
&& respMsg.indexOf(Constants.ALIPAY_UPLOAD_R_SUCCESS) > -1) {
// move current csv file to backup dir
FileZipHelper.moveFile(message.getCsvUploading(), backupPath);
FileCSVHelper.logUploadedFileName(message.getCsvname(), message
.getUploadLog(), true, "upload csv ["
+ message.getCsvname()
+ "] to Alipay successfully and then log ["
+ message.getCsvname() + "] to "
+ message.getUploadLog());
message.getPostMethod().releaseConnection();
flag = true;
}
} catch (HttpException hx) {
logger.info(hx.getMessage());
} catch (IOException ex) {
logger.info(ex.getMessage());
}
return flag;
}
private boolean rollbackSendStatus(Message message) {
IPayProxyService payProxyService = (PayProxyServiceImpl) ApplicationContextWrapper
.getInstance().getBean("PayProxyService");
if (!payProxyService.rollbackPrepareSendUploadPM(message)) {
logger.error("Rollback send stauts error! id=" + message.getId()
+ ", status=" + message.getStatus() + ", time="
+ message.getRecieveDate());
return false;
}
return true;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?