Заменил ArrayList на потокобезопасную Queue
Заменил ArrayList собираемых данных с poll сервера на потокобезопасную Queue, что позволило запустить паралельно с слушателем событий обработчик событий, при этом не теряя сообщения
This commit is contained in:
parent
edebc5c4fa
commit
58d2e7d3bc
@ -2,7 +2,7 @@ package org.sadtech.vkbot.listener.data;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Queue;
|
||||
|
||||
public interface ResponsibleData {
|
||||
|
||||
@ -12,6 +12,6 @@ public interface ResponsibleData {
|
||||
|
||||
void cleanAll();
|
||||
|
||||
List<JsonObject> getJsonObjects();
|
||||
Queue<JsonObject> getJsonObjects();
|
||||
|
||||
}
|
||||
|
@ -4,17 +4,17 @@ import com.google.gson.JsonObject;
|
||||
import org.sadtech.vkbot.listener.data.ResponsibleData;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
|
||||
@Component
|
||||
public class ResponseDataVk implements ResponsibleData {
|
||||
|
||||
private List<JsonObject> jsonObjects = new ArrayList<JsonObject>();
|
||||
private Queue<JsonObject> jsonObjects = new ConcurrentLinkedQueue<JsonObject>();
|
||||
|
||||
@Override
|
||||
public void add(JsonObject jsonObject) {
|
||||
jsonObjects.add(jsonObject);
|
||||
jsonObjects.offer(jsonObject);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -27,7 +27,7 @@ public class ResponseDataVk implements ResponsibleData {
|
||||
jsonObjects.clear();
|
||||
}
|
||||
|
||||
public List<JsonObject> getJsonObjects() {
|
||||
public Queue<JsonObject> getJsonObjects() {
|
||||
return jsonObjects;
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import lombok.extern.log4j.Log4j;
|
||||
import org.sadtech.vkbot.listener.Observable;
|
||||
import org.sadtech.vkbot.listener.Observer;
|
||||
import org.sadtech.vkbot.listener.data.ResponsibleData;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@ -17,21 +18,18 @@ public class DispetcherHandler implements Observable {
|
||||
|
||||
private ResponsibleData date;
|
||||
private List<Observer> observers = new ArrayList<Observer>();
|
||||
private List<JsonObject> objects;
|
||||
|
||||
public DispetcherHandler(ResponsibleData date) {
|
||||
this.date = date;
|
||||
}
|
||||
|
||||
@Scheduled(fixedRate = 5000)
|
||||
@Async
|
||||
public void packaging() {
|
||||
|
||||
objects = new ArrayList<JsonObject>(date.getJsonObjects());
|
||||
date.cleanAll();
|
||||
for (JsonObject object : objects) {
|
||||
log.info(object);
|
||||
while (true) {
|
||||
if (date.getJsonObjects().peek() != null) {
|
||||
log.info(date.getJsonObjects().poll());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user