From ae7b54e6bb99043dd024311f90675c982a51d2e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=80=E6=BA=90=E6=B5=B7=E5=93=A5?= Date: Wed, 5 Apr 2023 13:22:54 +0800 Subject: [PATCH] add HttpMessageReporter --- .../com/mybatisflex/core/audit/AuditManager.java | 13 +++++++++++++ .../core/audit/ScheduledMessageCollector.java | 10 ++++++++++ .../core/audit/http/HttpMessageReporter.java | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/AuditManager.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/AuditManager.java index d3354299..3c2d7321 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/AuditManager.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/AuditManager.java @@ -61,10 +61,23 @@ public class AuditManager { return messageCollector; } + + public static void setMessageReporter(MessageReporter messageReporter){ + MessageCollector newMessageCollector = new ScheduledMessageCollector(10,messageReporter); + setMessageCollector(newMessageCollector); + } + public static void setMessageCollector(MessageCollector messageCollector) { + releaseScheduledMessageCollector(); AuditManager.messageCollector = messageCollector; } + private static void releaseScheduledMessageCollector() { + if (messageCollector instanceof ScheduledMessageCollector){ + ((ScheduledMessageCollector) messageCollector).release(); + } + } + public static T startAudit(AuditRunnable supplier, BoundSql boundSql) throws SQLException { AuditMessage auditMessage = messageCreator.create(); if (auditMessage == null) { diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/ScheduledMessageCollector.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/ScheduledMessageCollector.java index 0f4a4256..8ae66fdc 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/ScheduledMessageCollector.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/ScheduledMessageCollector.java @@ -48,6 +48,12 @@ public class ScheduledMessageCollector implements MessageCollector, Runnable { public ScheduledMessageCollector(long period, MessageReporter messageSender) { this.period = period; this.messageSender = messageSender; + scheduler = Executors.newSingleThreadScheduledExecutor(runnable -> { + Thread thread = new Thread(runnable, "ScheduledMessageCollector"); + thread.setDaemon(true); + return thread; + }); + scheduler.scheduleAtFixedRate(this, period, period, TimeUnit.SECONDS); } @@ -80,4 +86,8 @@ public class ScheduledMessageCollector implements MessageCollector, Runnable { messageSender.sendMessages(sendMessages); } + + public void release() { + scheduler.shutdown(); + } } diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/http/HttpMessageReporter.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/http/HttpMessageReporter.java index 8c30bd1d..ace10e3d 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/http/HttpMessageReporter.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/audit/http/HttpMessageReporter.java @@ -40,7 +40,7 @@ public class HttpMessageReporter implements MessageReporter { HttpUtil.post(url, jsonFormatter.toJSONString(messages)); } - interface JSONFormatter { + public interface JSONFormatter { String toJSONString(Object object); }