Browse Source

Merge pull request #3381 from YevhenBondarenko/queue/improvements

added logs for in memory queue
pull/3404/head
Igor Kulikov 6 years ago
committed by GitHub
parent
commit
8ebaa22ae2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      common/queue/src/main/java/org/thingsboard/server/queue/memory/InMemoryStorage.java
  2. 2
      common/queue/src/main/java/org/thingsboard/server/queue/memory/InMemoryTbQueueProducer.java

18
common/queue/src/main/java/org/thingsboard/server/queue/memory/InMemoryStorage.java

@ -23,16 +23,29 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@Slf4j
public final class InMemoryStorage {
private static InMemoryStorage instance;
private final ConcurrentHashMap<String, BlockingQueue<TbQueueMsg>> storage;
private static ScheduledExecutorService statExecutor;
private InMemoryStorage() {
storage = new ConcurrentHashMap<>();
statExecutor = Executors.newSingleThreadScheduledExecutor();
statExecutor.scheduleAtFixedRate(this::printStats, 60, 60, TimeUnit.SECONDS);
}
private void printStats() {
storage.forEach((topic, queue) -> {
if (queue.size() > 0) {
log.debug("Topic: [{}], Queue size: [{}]", topic, queue.size());
}
});
}
public static InMemoryStorage getInstance() {
@ -77,4 +90,9 @@ public final class InMemoryStorage {
storage.clear();
}
public void destroy() {
if (statExecutor != null) {
statExecutor.shutdownNow();
}
}
}

2
common/queue/src/main/java/org/thingsboard/server/queue/memory/InMemoryTbQueueProducer.java

@ -53,6 +53,6 @@ public class InMemoryTbQueueProducer<T extends TbQueueMsg> implements TbQueuePro
@Override
public void stop() {
storage.destroy();
}
}

Loading…
Cancel
Save