diff --git a/parent/center.manager/src/main/java/com/lyms/cm/job/SyncTmpJob.java b/parent/center.manager/src/main/java/com/lyms/cm/job/SyncTmpJob.java index 0d68c03..fecd792 100644 --- a/parent/center.manager/src/main/java/com/lyms/cm/job/SyncTmpJob.java +++ b/parent/center.manager/src/main/java/com/lyms/cm/job/SyncTmpJob.java @@ -1,15 +1,19 @@ package com.lyms.cm.job; +import java.io.Serializable; import java.util.concurrent.atomic.AtomicBoolean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import com.alibaba.fastjson.JSONObject; 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.sync.queue.SyncQueue; import com.lyms.util.HttpUtils; import com.lyms.util.JsonUtils; @@ -28,8 +32,20 @@ public class SyncTmpJob { @Autowired public SyncCenter center; + + @Autowired + public RedisTemplate template; + + /** + * 初始化的时候将错误队列内容迁移到临时任务队列 + */ + private static boolean initLoadErrorToTempWork = true; public void excute() { + if(initLoadErrorToTempWork){ + errorWorkToTempWork(); + } + if (reset.get()) { return; } @@ -65,4 +81,32 @@ public class SyncTmpJob { reset.set(false); } } + + + /** + *
  • @Description:错误队列迁移到临时任务队列 + *
  • + *
  • 创建人:方承 + *
  • 创建时间:2017年5月5日 + *
  • 修改人: + *
  • 修改时间: + */ + public void errorWorkToTempWork(){ + initLoadErrorToTempWork = false; + LOG.info("=============开始==迁移同步队列【错误队列 转移到 临时任务队列】============"); + boolean hasNext = true; + while(hasNext){ + Serializable object = template.opsForList().rightPop(SyncQueue.TMP_WORK_ERROR); + if(object != null){ + ChannelData data = (ChannelData) object; + LOG.info(JSONObject.toJSONString(data)); + data.setErrorRetryCount(0); + template.opsForList().leftPush(SyncQueue.TMP_WORK, data); + }else{ + hasNext = false; + } + } + LOG.info("=============结束==迁移同步队列【错误队列 转移到 临时任务队列】============"); + return; + } } diff --git a/parent/center.manager/src/main/resources/dev/redis.properties b/parent/center.manager/src/main/resources/dev/redis.properties index 9650d89..50adb7c 100644 --- a/parent/center.manager/src/main/resources/dev/redis.properties +++ b/parent/center.manager/src/main/resources/dev/redis.properties @@ -1,9 +1,9 @@ -#redis.host1=119.90.57.26 -#redis.port1=6379 -#redis.password1=Lyms123456 -redis.host1=127.0.0.1 +redis.host1=119.90.57.26 redis.port1=6379 -redis.password1= +redis.password1=Lyms123456 +#redis.host1=127.0.0.1 +#redis.port1=6379 +#redis.password1= #redis.host1=127.0.0.1 #redis.port1=6379 #redis.password1=Lyms123456 diff --git a/parent/core.sdk/src/main/java/com/lyms/sync/channel/ChannelData.java b/parent/core.sdk/src/main/java/com/lyms/sync/channel/ChannelData.java index e28fae5..3245ff6 100644 --- a/parent/core.sdk/src/main/java/com/lyms/sync/channel/ChannelData.java +++ b/parent/core.sdk/src/main/java/com/lyms/sync/channel/ChannelData.java @@ -64,6 +64,11 @@ public class ChannelData implements Serializable { * 创建时间 */ private Long ts; + + /** + * 出错重试次数 + */ + private int errorRetryCount; public ChannelData(String remote, String remoteClazz, String remoteMethod, String data, boolean loop) { this.id = StrUtils.uuid(); @@ -167,4 +172,14 @@ public class ChannelData implements Serializable { return JsonUtils.beanToJson(this); } + public int getErrorRetryCount() { + return errorRetryCount; + } + + public void setErrorRetryCount(int errorRetryCount) { + this.errorRetryCount = errorRetryCount; + } + + + } diff --git a/parent/core.sdk/src/main/java/com/lyms/sync/queue/SyncQueue.java b/parent/core.sdk/src/main/java/com/lyms/sync/queue/SyncQueue.java index f635cbb..674473b 100644 --- a/parent/core.sdk/src/main/java/com/lyms/sync/queue/SyncQueue.java +++ b/parent/core.sdk/src/main/java/com/lyms/sync/queue/SyncQueue.java @@ -48,6 +48,17 @@ public class SyncQueue { * 临时任务 */ public static final String TMP_WORK = "TMP_WORK"; + + /** + * 错误重试次数 + */ + public static final int ERROR_RETRY_COUNT = 3; + + + /** + * 临时任务出错一定次数后放入此任务队列 + */ + public static final String TMP_WORK_ERROR = "TMP_WORK_ERROR"; /** * 回执消息任务 @@ -112,7 +123,13 @@ public class SyncQueue { *
  • 修改时间: */ private boolean pushTempWork(ChannelData data) { - Long tag = template.opsForList().leftPush(TMP_WORK, data); + Long tag = 0l; + if(data.getErrorRetryCount() > ERROR_RETRY_COUNT){ + tag = template.opsForList().leftPush(TMP_WORK_ERROR, data); + }else{ + data.setErrorRetryCount(data.getErrorRetryCount() + 1); + tag = template.opsForList().leftPush(TMP_WORK, data); + } return tag >= 1; } diff --git a/parent/hospital.web/src/main/java/com/lyms/hospital/controller/LoginController.java b/parent/hospital.web/src/main/java/com/lyms/hospital/controller/LoginController.java index a151a1d..1f4a2d5 100644 --- a/parent/hospital.web/src/main/java/com/lyms/hospital/controller/LoginController.java +++ b/parent/hospital.web/src/main/java/com/lyms/hospital/controller/LoginController.java @@ -24,6 +24,7 @@ import com.lyms.base.common.service.organ.OrganizationsService; import com.lyms.base.common.service.role.PermissionsService; import com.lyms.base.common.service.role.RolesService; import com.lyms.base.common.service.user.UsersService; +import com.lyms.constants.Constants; import com.lyms.hospital.service.token.TokenService; import com.lyms.util.DateTimeUtils; import com.lyms.util.InstanceUtils; @@ -141,6 +142,7 @@ public class LoginController extends BaseController { result.put("watermark", "water"); ajaxResult.setData(result); ajaxResult.setSuccess(true); + getSession().setAttribute(Constants.CURRENT_USER, users); return ajaxResult; }