package com.lyms.cm.job;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.lyms.sycn.SycnCallback;
import com.lyms.sycn.SycnCenter;
import com.lyms.sycn.SycnCenter.Work;
import com.lyms.sycn.channel.ChannelData;
import com.lyms.util.HttpUtils;
import com.lyms.util.JsonUtils;
/**
* <li>@ClassName: SycnJob
* <li>@Description: 同步任务执行器,依赖spring
* <li>@author maliang
* <li>@date 2017年3月14日
* <li>
*/
public class SycnTmpJob {
private Logger LOG = LoggerFactory.getLogger(getClass());
@Autowired
public SycnCenter center;
public void excute() {
// 拉取远端数据
LOG.debug("执行推送远程数据任务...");
final Work work = center.buildWork();
try {
work.pullTmp(new SycnCallback() {
@Override
public void callBack(Object object) {
if (object instanceof ChannelData) {
ChannelData model = (ChannelData) object;
if (model != null) {
// 任务发送执行
String result = HttpUtils.REMOTE.post(model);
model = JsonUtils.jsonToBean(result, ChannelData.class);
if (model != null && model.getAck()) {
work.backPressure();
}
}
}
}
});
} catch (Exception e) {
LOG.error("同步数据错误 {}", e);
work.backPressure();
}
}
}