mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 17:18:24 +08:00
optimize Audit module
This commit is contained in:
parent
45f9b65036
commit
c0190d7ecd
@ -25,7 +25,7 @@ public class ConsoleAuditMessageSender implements AuditMessageSender {
|
|||||||
@Override
|
@Override
|
||||||
public void sendMessages(List<AuditMessage> messages) {
|
public void sendMessages(List<AuditMessage> messages) {
|
||||||
for (AuditMessage message : messages) {
|
for (AuditMessage message : messages) {
|
||||||
System.out.println(">>>>>> AUDIT: " + message.toString());
|
System.out.println(">>>>>> Sql Audit: " + message.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,7 @@ import java.util.List;
|
|||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认的审计消息收集器,其收集消息后,定时通过消息发送器{@link AuditMessageSender}把消息发送过去
|
* 默认的审计消息收集器,其收集消息后,定时通过消息发送器{@link AuditMessageSender}把消息发送过去
|
||||||
@ -32,6 +33,7 @@ public class DefaultAuditMessageCollector implements AuditMessageCollector, Runn
|
|||||||
private AuditMessageSender messageSender = new ConsoleAuditMessageSender();
|
private AuditMessageSender messageSender = new ConsoleAuditMessageSender();
|
||||||
|
|
||||||
private List<AuditMessage> messages = Collections.synchronizedList(new ArrayList<>());
|
private List<AuditMessage> messages = Collections.synchronizedList(new ArrayList<>());
|
||||||
|
private ReentrantReadWriteLock rrwLock = new ReentrantReadWriteLock();
|
||||||
|
|
||||||
public DefaultAuditMessageCollector() {
|
public DefaultAuditMessageCollector() {
|
||||||
scheduler = Executors.newSingleThreadScheduledExecutor(runnable -> {
|
scheduler = Executors.newSingleThreadScheduledExecutor(runnable -> {
|
||||||
@ -49,7 +51,12 @@ public class DefaultAuditMessageCollector implements AuditMessageCollector, Runn
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void collect(AuditMessage message) {
|
public void collect(AuditMessage message) {
|
||||||
messages.add(message);
|
try {
|
||||||
|
rrwLock.readLock().lock();
|
||||||
|
messages.add(message);
|
||||||
|
} finally {
|
||||||
|
rrwLock.readLock().unlock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -58,8 +65,17 @@ public class DefaultAuditMessageCollector implements AuditMessageCollector, Runn
|
|||||||
if (messages.isEmpty()) {
|
if (messages.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<AuditMessage> sendMessages = new ArrayList(messages);
|
|
||||||
messages.clear();
|
List<AuditMessage> sendMessages;
|
||||||
|
|
||||||
|
try {
|
||||||
|
rrwLock.writeLock().lock();
|
||||||
|
sendMessages = new ArrayList<>(messages);
|
||||||
|
messages.clear();
|
||||||
|
} finally {
|
||||||
|
rrwLock.writeLock().unlock();
|
||||||
|
}
|
||||||
|
|
||||||
messageSender.sendMessages(sendMessages);
|
messageSender.sendMessages(sendMessages);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user