diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/inteceptor/MybatisSqlInterceptor.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/inteceptor/MybatisSqlInterceptor.java index 35a2701..501a200 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/inteceptor/MybatisSqlInterceptor.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/inteceptor/MybatisSqlInterceptor.java @@ -71,7 +71,7 @@ public class MybatisSqlInterceptor implements Interceptor { System.out.println("delete or update sync sql = " + sql); //发送要同步的sql - SendMysqlSyncDatUtil.sendSql(sql, sqlId); + SendMysqlSyncDatUtil.addSqlToQueue(sql, sqlId); sql = null; } } @@ -100,7 +100,7 @@ public class MybatisSqlInterceptor implements Interceptor { sql = sql.substring(0,sql.lastIndexOf("(")+1)+list.get(0)+","+sql.substring(sql.lastIndexOf("(")+1,sql.length()); System.out.println("add sync sql = "+sql); //发送要同步的sql - SendMysqlSyncDatUtil.sendSql(sql, sqlId); + SendMysqlSyncDatUtil.addSqlToQueue(sql, sqlId); sql = null; } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SqlRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SqlRequest.java index dd46636..cf81f22 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SqlRequest.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/SqlRequest.java @@ -24,4 +24,12 @@ public class SqlRequest { public void setSql(String sql) { this.sql = sql; } + + @Override + public String toString() { + return "SqlRequest{" + + "sql='" + sql + '\'' + + ", sqlId='" + sqlId + '\'' + + '}'; + } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SendMysqlSyncDatUtil.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SendMysqlSyncDatUtil.java index 3edf405..44c2607 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SendMysqlSyncDatUtil.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SendMysqlSyncDatUtil.java @@ -1,19 +1,26 @@ package com.lyms.platform.operate.web.utils; +import com.lyms.platform.common.utils.ExceptionUtils; import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.PropertiesUtils; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.request.SqlRequest; import org.apache.commons.codec.binary.Base64; import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.InitializingBean; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.TimeUnit; /** * Created by Administrator on 2017-04-25. */ -public class SendMysqlSyncDatUtil { +public class SendMysqlSyncDatUtil implements InitializingBean { + + private static BlockingQueue syncSqlQueue = new LinkedBlockingQueue(); private static Set urls = new HashSet<>(); static @@ -29,21 +36,43 @@ public class SendMysqlSyncDatUtil { } } - public static void sendSql(String sql ,String sqlId) + public static void addSqlToQueue(String sql ,String sqlId) { SqlRequest request = new SqlRequest(); request.setSql(Base64.encodeBase64String(sql.getBytes())); request.setSqlId(sqlId); - String json = JsonUtil.obj2Str(request); - if (CollectionUtils.isNotEmpty(urls)) - { - for(String url : urls) - { - System.out.println("sync mysql url = " + url); - String result = HttpClientUtil.doPostSSL(url,json,"3d19960bf3e81e7d816c4f26051c49ba"); - System.out.println("sync mysql result = " + result); + syncSqlQueue.add(request); + } + + @Override + public void afterPropertiesSet() throws Exception { + System.out.println("init ........."); + new HandleThread().start(); + } + + + private class HandleThread extends Thread { + @Override + public void run() { + SqlRequest request = null; + while (true) { + try { + System.out.println("get resuest = " + request+" size = "+syncSqlQueue.size()); + request = syncSqlQueue.poll(1, TimeUnit.MINUTES); + String json = JsonUtil.obj2Str(request); + if (CollectionUtils.isNotEmpty(urls)) + { + for(String url : urls) + { + System.out.println("sync mysql url = " + url); + String result = HttpClientUtil.doPostSSL(url,json,"3d19960bf3e81e7d816c4f26051c49ba"); + System.out.println("sync mysql result = " + result); + } + } + } catch (Exception e) { + ExceptionUtils.catchException(e, "HandleThread thread error." + request); + } } } - } }