配合前端减少渲染次数,将动态航班信息加入到缓存。隔指定时间xx 后,以数组的形式一次发出。

This commit is contained in:
zhouxiunai
2019-01-17 20:59:43 +08:00
parent 1e8cf60dbb
commit f0dbf1a3b3
8 changed files with 185 additions and 63 deletions
@@ -0,0 +1,61 @@
package com.gzzn.omms.msgexchangeapi.service;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ConcurrentLinkedQueue;
import org.springframework.stereotype.Service;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD.FLTR;
/**
* 要发到kafka 的消息,先在这里做缓存。
* @author zhouxiunai
*
*/
@Service("msgbufferservice")
public class MsgBufferService implements IMsgBufferService {
private static ConcurrentLinkedQueue<SCHD.FLTR> fltrBuffer = new ConcurrentLinkedQueue<SCHD.FLTR>();
private static ConcurrentLinkedQueue<String> msgBuffer = new ConcurrentLinkedQueue<String>();
@Override
public void addFltr(SCHD.FLTR fltr) {
fltrBuffer.add(fltr);
}
@Override
public void addMsg(String msg) {
msgBuffer.add(msg);
}
@Override
public List<FLTR> takeAllFltr() {
if(fltrBuffer.size() <= 0)
{
return Collections.emptyList();
}
//
FLTR[] fltrs = (FLTR[]) fltrBuffer.toArray(new FLTR[fltrBuffer.size()]); // TODO 转换出错
fltrBuffer.clear();//to fix ,获取及清空过程中是否要加锁
return Arrays.asList(fltrs);
}
@Override
public List<String> takeAllMsg() {
if(msgBuffer.size() <= 0)
{
return Collections.emptyList();
}
//
String[] msgs = (String[]) msgBuffer.toArray();
msgBuffer.clear();//to fix ,获取及清空过程中是否要加锁
return Arrays.asList(msgs);
}
}