Drain ivents from queue
This commit is contained in:
parent
c5ace5e151
commit
a3a1debe45
1 changed files with 24 additions and 19 deletions
|
|
@ -30,6 +30,8 @@ import java.nio.file.StandardCopyOption;
|
|||
import java.nio.file.StandardOpenOption;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
|
@ -40,7 +42,7 @@ import java.util.concurrent.TimeUnit;
|
|||
@Service
|
||||
public class SignalKafkaEventWriterService {
|
||||
private final static Charset encoding = Charset.forName("windows-1251");
|
||||
private final static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
|
||||
private final static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"); // TODO убрать время
|
||||
|
||||
private final ExecutorService executorService = Executors.newSingleThreadExecutor(
|
||||
new CustomizableThreadFactory("signal-kafka-event-writer-")
|
||||
|
|
@ -65,7 +67,8 @@ public class SignalKafkaEventWriterService {
|
|||
|
||||
public void startWriting() {
|
||||
while (true) {
|
||||
SignalKafkaEvent event = take();
|
||||
List<SignalKafkaEvent> events = drain();
|
||||
for (SignalKafkaEvent event : events) {
|
||||
if (event == null) {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -82,6 +85,7 @@ public class SignalKafkaEventWriterService {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Записывает сигнал в xml для конкретного пакета
|
||||
|
|
@ -295,13 +299,14 @@ public class SignalKafkaEventWriterService {
|
|||
.replace("'", "'");
|
||||
}
|
||||
|
||||
private SignalKafkaEvent take() {
|
||||
private List<SignalKafkaEvent> drain() {
|
||||
try {
|
||||
return signalEventsQueue.take();
|
||||
} catch (InterruptedException e) {
|
||||
log.error("Error while taking signal event", e);
|
||||
Thread.currentThread().interrupt();
|
||||
return null;
|
||||
List<SignalKafkaEvent> batch = new ArrayList<>(1000);
|
||||
signalEventsQueue.drainTo(batch, 1000);
|
||||
return batch;
|
||||
} catch (Exception e) {
|
||||
log.error("Error while drain signal events", e);
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue