protected int executeTask() {
    int nums = 0;
    logger.debug("start execute RepeatUpChannelTask");
    List<UpChannelRecord> records = null;
    try {
      records = CacheManager.getInstance().getUpChannelRecordCache().getNeedUpChannel(100);
    } catch (CacheException e) {
      logger.error("exception when execute RepeatUpChannelTask", e);
    }
    if (records != null && !records.isEmpty()) {
      UpChannelHandler upChannelHandler = UpChannelHandler.getInstance();
      for (UpChannelRecord record : records) {
        DdoMsg ddoMsg = this.getDdoMsg(record.getDdoMsgId());
        Channel channel = this.getChannel(ddoMsg.getChannelId());
        ChannelRequest request = this.getChannelRequest(ddoMsg.getRequestId());
        if (ddoMsg != null && channel != null && request != null) {
          if (this.isNeedUpChannel(channel, request.getSourceType().intValue())) {
            upChannelHandler.handle(
                ddoMsg, request.getContent(), channel.getUpUrl(), record.getId());
          } else {
            try {
              CacheManager.getInstance().getUpChannelRecordCache().updateNoRepeat(record.getId());
            } catch (CacheException e) {
              logger.error("exception when execute RepeatUpChannelTask", e);
            }
          }

        } else {
          logger.warn(
              "the ddoMsg or channel or request is null channel is "
                  + channel
                  + ", request is "
                  + request
                  + ", ddoMsg is "
                  + ddoMsg);
        }
      }
      nums = records.size();
    }
    logger.debug("end execute RepeatUpChannelTask");
    return nums;
  }
 /**
  * 判断是否需要上行到渠道
  *
  * @param channel
  * @return
  */
 private boolean isNeedUpChannel(Channel channel, int sourceType) {
   return (sourceType == 2 && channel.getUpUrl() != null);
 }