add HttpMessageReporter

This commit is contained in:
开源海哥 2023-04-05 13:22:54 +08:00
parent c8adf01b54
commit ae7b54e6bb
3 changed files with 24 additions and 1 deletions

View File

@ -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> T startAudit(AuditRunnable<T> supplier, BoundSql boundSql) throws SQLException {
AuditMessage auditMessage = messageCreator.create();
if (auditMessage == null) {

View File

@ -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();
}
}

View File

@ -40,7 +40,7 @@ public class HttpMessageReporter implements MessageReporter {
HttpUtil.post(url, jsonFormatter.toJSONString(messages));
}
interface JSONFormatter {
public interface JSONFormatter {
String toJSONString(Object object);
}