package com.lyms.cm.job; import java.util.concurrent.atomic.AtomicBoolean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import com.lyms.sync.SyncCallback; import com.lyms.sync.SyncCenter; import com.lyms.sync.SyncCenter.Work; import com.lyms.sync.channel.ChannelData; import com.lyms.util.HttpUtils; import com.lyms.util.JsonUtils; /** *
  • @ClassName: SycnJob *
  • @Description: 同步任务执行器,依赖spring *
  • @author maliang *
  • @date 2017年3月14日 *
  • */ public class SyncTmpJob { private Logger LOG = LoggerFactory.getLogger(getClass()); private final AtomicBoolean reset = new AtomicBoolean(false); @Autowired public SyncCenter center; public void excute() { if (reset.get()) { return; } reset.set(true); // 拉取远端数据 //LOG.debug("执行推送远程数据任务..."); final Work work = center.buildWork(); try { work.pullTmp(new SyncCallback() { @Override public void callBack(Object object) { if (object instanceof ChannelData) { ChannelData model = (ChannelData) object; if (model != null) { // 任务发送执行 String result = HttpUtils.REMOTE.post(model); if(result == null){//远程无法访问等情况 work.backPressure(); return; } model = JsonUtils.jsonToBean(result, ChannelData.class); if (model != null && model.getAck()) { work.backPressure(); } } } } }); } catch (Exception e) { LOG.error("同步数据错误 {}", e); work.backPressure(); } finally { reset.set(false); } } }