diff --git a/center.manager/src/main/resources/xml/app-sycn.xml b/center.manager/src/main/resources/xml/app-sycn.xml
new file mode 100644
index 0000000..4798db4
--- /dev/null
+++ b/center.manager/src/main/resources/xml/app-sycn.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/center.manager/src/main/resources/xml/app-syncn.xml b/center.manager/src/main/resources/xml/app-syncn.xml
deleted file mode 100644
index 49a7fa5..0000000
--- a/center.manager/src/main/resources/xml/app-syncn.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/center.manager/src/test/java/center/manager/test/user/WorkTest.java b/center.manager/src/test/java/center/manager/test/user/WorkTest.java
index 5316662..a382795 100644
--- a/center.manager/src/test/java/center/manager/test/user/WorkTest.java
+++ b/center.manager/src/test/java/center/manager/test/user/WorkTest.java
@@ -4,15 +4,9 @@ import org.apache.commons.lang3.builder.ToStringBuilder;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import com.alibaba.fastjson.JSON;
-import com.lyms.cm.entity.sys.SysUsers;
-import com.lyms.sycn.ParamsAdpter;
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;
import com.lyms.util.StrUtils;
/**
@@ -27,140 +21,54 @@ public class WorkTest extends BaseTest {
@Autowired
public SycnCenter center;
+ /**
+ *
@Description:测试往固定任务队列中添加任务
+ *
+ * 创建人:maliang
+ * 创建时间:2017年3月16日
+ * 修改人:
+ * 修改时间:
+ */
@Test
- public void push() {
+ public void pushFix() {
+ String id = StrUtils.uuid();
String remote = "http://127.0.0.1:9090/hospital.web/remote/sycn";
String remoteClazz = "com.lyms.hospital.service.sys.impl.SyncDataBasicServiceImpl";
String remoteMethod = "selectOne";
- Object data = null;// new Object[] { user, null };
-
- boolean loop = true;
-
- ChannelData push = new ChannelData(remote, remoteClazz, remoteMethod, null, loop);
-
- center.buildWork().push(push, new SycnCallback() {
- @Override
- public void callBack(Object object) {
- System.out.println("push callBack : " + object);
- }
- });
- }
-
- @Test
- public void workTest() throws InterruptedException {
- new Thread(new Runnable() {
-
- @Override
- public void run() {
- tmp();
- }
- }).start();
-
- /*
- * new Thread(new Runnable() {
- *
- * @Override public void run() { try { fix(); } catch
- * (InterruptedException e) { e.printStackTrace(); } } }).start();
- */
- //
- while (true) {
- push();
- Thread.sleep(30000);
- }
-
+ center.pushFix(id, remote, remoteClazz, remoteMethod, null);
}
+ /**
+ * @Description:测试往固定任务队列中添加任务
+ *
+ * 创建人:maliang
+ * 创建时间:2017年3月16日
+ * 修改人:
+ * 修改时间:
+ */
@Test
- public void tmp() {
- while (true) {
- final Work work = center.buildWork();
- try {
- // final AckObj ack = new AckObj();
-
- work.pullTmp(new SycnCallback() {
- @Override
- public void callBack(Object object) {
- if (object == null)
- return;
- if (object instanceof ChannelData) {
- ChannelData model = (ChannelData) object;
- String result = HttpUtils.REMOTE.post(model);
- System.out.println(result);
- model = JsonUtils.jsonToBean(result, ChannelData.class);
- System.out.println("回执: " + ToStringBuilder.reflectionToString(model));
- if (model != null) {
- if (!model.getAck()) {
- work.backPressure();
- } else {
- System.out.println("远程数据处理成功");
- }
- }
- }
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- // 异常数据反压
- System.out.println("数据反压");
- work.backPressure();
- }
- }
+ public void pushTmp() {
+ String id = StrUtils.uuid();
+ String remote = "http://127.0.0.1:9090/hospital.web/remote/sycn";
+ String remoteClazz = "com.lyms.hospital.service.sys.impl.SyncDataBasicServiceImpl";
+ String remoteMethod = "selectOne";
+ // 参数构建如下注释方式
+ // ParamsAdpter adpter =
+ // ParamsAdpter.builder().push(null).push(null).push(null);;
+ center.pushFix(id, remote, remoteClazz, remoteMethod, null);
}
@Test
- public void fix() throws InterruptedException {
- // 获取固定任务队列任务
- // 包含ack 回调方法
- // while (true) {
- Work work2 = center.buildWork();
- try {
- // final AckObj ack = new AckObj();
- work2.pullFix(new SycnCallback() {
- @Override
- public void callBack(Object object) {
- if (object != null && object instanceof ChannelData) {
- // remote
- ChannelData model = (ChannelData) object;
- // 处理实际业务
- System.out.println(ToStringBuilder.reflectionToString(model));
- System.out.println(model.getRemote() + "====>fix");
- String result = HttpUtils.REMOTE.post(model);
- System.out.println(result);
- // ack.setData(model.getData());
- }
+ public void pull() {
+ center.pull(true, new SycnCallback() {
+ @Override
+ public void callBack(Object object) {
+ if (object instanceof ChannelData) {
+ ChannelData data = (ChannelData) object;
+ System.out.println(ToStringBuilder.reflectionToString(data));
}
- });// .ackGet(params);// .ackGet(null)
- } catch (Exception e) {
- e.printStackTrace();
- }
- // Thread.sleep(15000);
- // }
- }
-
- public static void buildParams() throws ClassNotFoundException {
- String uid = StrUtils.uuid();
-
- ChannelData data = ChannelData.emtpy();
- data.setId(uid);
- data.setRemote(null);
- data.setRemoteClazz("com.lyms.cm.service.sys.impl.SysUsersServiceImpl");
- data.setRemoteMethod("addUser");
- SysUsers user = new SysUsers();
- user.setId(uid);
- user.setName("拉取信息测试");
- // Object params = new Object[] { user, null };
-
- // 设置参数
- ParamsAdpter params = ParamsAdpter.builder().push(user).push(null);
- data.setData(params.toJsonString());
-
- String str = JSON.toJSONString(data);
- System.out.println(str);
-
- }
-
- public static void main(String[] args) throws ClassNotFoundException {
- buildParams();
+ }
+ });
}
}
diff --git a/core.sdk/src/main/java/com/lyms/sycn/SycnCallback.java b/core.sdk/src/main/java/com/lyms/sycn/SycnCallback.java
index 4ccb979..31f59ad 100644
--- a/core.sdk/src/main/java/com/lyms/sycn/SycnCallback.java
+++ b/core.sdk/src/main/java/com/lyms/sycn/SycnCallback.java
@@ -1,5 +1,7 @@
package com.lyms.sycn;
+import org.apache.ibatis.javassist.expr.Instanceof;
+
/**
* @ClassName: CenterCallback
* @Description: 数据回调
@@ -8,5 +10,13 @@ package com.lyms.sycn;
*
*/
public interface SycnCallback {
+ /**
+ * @Description:回调方法
+ * @param object Instanceof {@link Instanceof ChannelData}
+ * 创建人:maliang
+ * 创建时间:2017年3月16日
+ * 修改人:
+ * 修改时间:
+ */
public void callBack(Object object);
}
diff --git a/core.sdk/src/main/java/com/lyms/sycn/SycnCenter.java b/core.sdk/src/main/java/com/lyms/sycn/SycnCenter.java
index 84cf269..33731f0 100644
--- a/core.sdk/src/main/java/com/lyms/sycn/SycnCenter.java
+++ b/core.sdk/src/main/java/com/lyms/sycn/SycnCenter.java
@@ -43,6 +43,93 @@ public class SycnCenter {
}
/**
+ * @Description:在3次没有成功将会放弃,如果需要对失败处理 ,使用
+ * {@link Work#push(ChannelData, SycnCallback)}
+ *
+ * 该方法使用尽量异步操作,避免阻塞
+ *
@return
+ * 创建人:maliang
+ * 创建时间:2017年3月16日
+ * 修改人:
+ * 修改时间:
+ */
+ public boolean pushFix(String id, String remote, String remoteClazz, String remoteMethod, ParamsAdpter adpter) {
+ ChannelData data = new ChannelData(id, remote, remoteClazz, remoteMethod, adpter.toJsonString(), true);
+
+ int tag = 0;
+
+ do {
+ try {
+ buildWork().push(data, new SycnCallback() {
+ @Override
+ public void callBack(Object object) {
+ // nothing to do
+ }
+ });
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ tag++;
+ }
+ } while (tag < 3);
+
+ return false;
+ }
+
+ /**
+ *
+ * @Description: 获取数据,等价于下面两个方法
+ *
+ * {@link Work#pullFix(SycnCallback)}
+ *
+ * {@link Work#pullTmp(SycnCallback)}
+ *
@param loop 从固定任务队列中获取任务
+ * @param callBack
+ * 创建人:maliang
+ * 创建时间:2017年3月16日
+ * 修改人:
+ * 修改时间:
+ */
+ public void pull(boolean loop, SycnCallback callBack) {
+ if (loop)
+ buildWork().pullFix(callBack);
+ else
+ buildWork().pullTmp(callBack);
+ }
+
+ /**
+ * @Description:在3次没有成功将会放弃,如果需要对失败处理 ,使用
+ * {@link Work#push(ChannelData, SycnCallback)}
+ *
+ * 该方法使用尽量异步操作,避免阻塞
+ *
@return
+ * 创建人:maliang
+ * 创建时间:2017年3月16日
+ * 修改人:
+ * 修改时间:
+ */
+ public boolean pushTmp(String id, String remote, String remoteClazz, String remoteMethod, ParamsAdpter adpter) {
+ ChannelData data = new ChannelData(id, remote, remoteClazz, remoteMethod, adpter.toJsonString(), false);
+ int tag = 0;
+ do {
+ try {
+ buildWork().push(data, new SycnCallback() {
+ @Override
+ public void callBack(Object object) {
+ // nothing to do
+ }
+ });
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ tag++;
+ }
+ } while (tag < 3);
+
+ return false;
+ }
+
+ /**
* @Description:构建一个工作器
* @return
* 创建人:maliang
diff --git a/core.sdk/src/main/java/com/lyms/sycn/SycnHandler.java b/core.sdk/src/main/java/com/lyms/sycn/SycnHandler.java
index 3b680fc..3cce4ad 100644
--- a/core.sdk/src/main/java/com/lyms/sycn/SycnHandler.java
+++ b/core.sdk/src/main/java/com/lyms/sycn/SycnHandler.java
@@ -114,50 +114,4 @@ public class SycnHandler {
}
return null;
}
-
- /**
- * @Description:TODO(方法描述)
- * @param t
- * @param loop
- * @return
- * 创建人:maliang
- * 创建时间:2017年3月16日
- * 修改人:
- * 修改时间:
- */
- public static boolean pushFix(String id, String remote, String remoteClazz, String remoteMethod,
- ParamsAdpter adpter) {
-
- ChannelData data = new ChannelData(id, remote, remoteClazz, remoteMethod, adpter.toJsonString(), true);
- try {
- center.buildWork().push(data, new SycnCallback() {
- @Override
- public void callBack(Object object) {
- // nothing to do
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- return true;
- }
-
- public static boolean pushTmp(String id, String remote, String remoteClazz, String remoteMethod,
- ParamsAdpter adpter) {
- ChannelData data = new ChannelData(id, remote, remoteClazz, remoteMethod, adpter.toJsonString(), false);
- try {
- center.buildWork().push(data, new SycnCallback() {
- @Override
- public void callBack(Object object) {
- // nothing to do
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- return true;
- }
-
}