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 fltrBuffer = new ConcurrentLinkedQueue(); private static ConcurrentLinkedQueue msgBuffer = new ConcurrentLinkedQueue(); @Override public void addFltr(SCHD.FLTR fltr) { fltrBuffer.add(fltr); } @Override public void addMsg(String msg) { msgBuffer.add(msg); } @Override public List 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 takeAllMsg() { if(msgBuffer.size() <= 0) { return Collections.emptyList(); } // String[] msgs = (String[]) msgBuffer.toArray(); msgBuffer.clear();//to fix ,获取及清空过程中是否要加锁 return Arrays.asList(msgs); } }