Browse Source

新增分片工具类,按照小时、天、月纬度

刘凯雄 2 years ago
parent
commit
9a5e384752

+ 7 - 1
elab-mongodb/src/main/java/com/elab/mongodb/chain/CatMongoInterceptInvoke.java

@@ -148,7 +148,13 @@ public class CatMongoInterceptInvoke implements MongoInterceptInvoke {
             return (String)obj;
         }
         try {
-            return JSON.toJSONString(obj);
+            int maxLength = 1000;
+            String result = JSON.toJSONString(obj);
+            // 优化日志输出
+            if (result.length() > maxLength) {
+                return result.substring(0, maxLength);
+            }
+            return result;
         } catch (Exception e) {
             logger.warn("格式转换异常:{}", e.getMessage());
         }

+ 70 - 0
elab-mongodb/src/main/java/com/elab/mongodb/utils/ShardingUtils.java

@@ -0,0 +1,70 @@
+package com.elab.mongodb.utils;
+
+import org.apache.commons.lang3.time.DateFormatUtils;
+
+import java.util.Date;
+
+/**
+ * 分片工具类
+ *
+ * @author liukaixiong
+ * @date 2022/9/28 - 10:30
+ */
+public class ShardingUtils {
+
+    private static String date(String collectName, Date date, String format) {
+        String id = DateFormatUtils.format(date, format);
+        return collectName + "_" + id;
+    }
+
+    /**
+     * 按照天的纬度划分
+     *
+     * @param collectName 表名称
+     * @param date        时间纬度
+     * @return
+     */
+    public static String day(String collectName, Date date) {
+        return date(collectName, date, "yyMMdd");
+
+    }
+
+    /**
+     * 天纬度
+     *
+     * @param collectName
+     * @return
+     */
+    public static String day(String collectName) {
+        return day(collectName, new Date());
+    }
+
+    /**
+     * 小时纬度
+     *
+     * @param collectName
+     * @param date
+     * @return
+     */
+    public static String hours(String collectName, Date date) {
+        return date(collectName, date, "yyMMddhh");
+    }
+
+    /**
+     * 小时纬度
+     *
+     * @param collectName
+     * @return
+     */
+    public static String hours(String collectName) {
+        return date(collectName, new Date(), "yyMMddhh");
+    }
+
+    public static String month(String collectName) {
+        return date(collectName, new Date(), "yyMM");
+    }
+
+    public static String month(String collectName, Date date) {
+        return date(collectName, date, "yyMM");
+    }
+}