1 package org.onap.msb.apiroute.wrapper.queue;
5 import java.util.concurrent.BlockingQueue;
7 import org.apache.http.HttpEntity;
8 import org.slf4j.Logger;
9 import org.slf4j.LoggerFactory;
11 public class ServiceListQueue extends BaseQueue<HttpEntity> {
13 private static final Logger LOGGER = LoggerFactory.getLogger(ServiceListQueue.class);
16 private static final int SERVICE_LIST_DATA_QUEUE_NUM = 1;
17 private static final int SERVICE_LIST_QUEUE_INDEX = 0;
19 public ServiceListQueue(final int queueCapacity) {
20 super(SERVICE_LIST_DATA_QUEUE_NUM,queueCapacity);
24 public void put(ServiceData<HttpEntity> data) throws InterruptedException {
25 BlockingQueue<ServiceData<HttpEntity>> queue=getQueue(SERVICE_LIST_QUEUE_INDEX);
27 int size=queue.size();
28 // LOGGER.info("before put ServiceListQueue[size:"+size+"] success :[service num]"+data.getData().size());
39 public ServiceData<HttpEntity> take(int queueIndex) throws InterruptedException {
40 BlockingQueue<ServiceData<HttpEntity>> queue = getQueue(queueIndex);
41 ServiceData<HttpEntity> serviceData = queue.take();
45 if (queue.isEmpty()) {
46 LOGGER.info("take a single serviceData from ServiceListQueue ");
49 List<ServiceData<Map<String, List<String>>>> serviceDataList =
50 new ArrayList<ServiceData<Map<String, List<String>>>>();
51 //一次性从BlockingQueue获取所有数据
52 queue.drainTo(serviceDataList);
53 LOGGER.info("take multiple serviceDatas from ServiceListQueue :[num]"+serviceDataList.size());
54 return serviceDataList.get(serviceDataList.size() - 1);