Divide the MSB source codes into two repos
[msb/apigateway.git] / apiroute / apiroute-service / src / main / java / org / onap / msb / apiroute / wrapper / queue / ServiceQueue.java
1 package org.onap.msb.apiroute.wrapper.queue;
2
3 import java.util.List;
4 import java.util.concurrent.BlockingQueue;
5
6 import org.onap.msb.apiroute.wrapper.consulextend.model.health.ServiceHealth;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9
10
11 public class ServiceQueue extends BaseQueue<List<ServiceHealth>> {
12   
13   private static final Logger LOGGER = LoggerFactory.getLogger(ServiceQueue.class);
14
15   private  int queneNum;
16   
17   public ServiceQueue(final int queneNum,final int queueCapacity) {
18     super(queneNum,queueCapacity);
19     this.queneNum=queneNum;
20   }
21   
22
23   @Override
24   public void put(final ServiceData<List<ServiceHealth>> data) throws InterruptedException {
25     if(data.getData()==null || data.getData().size()==0) return;
26     
27     String serviceName = data.getData().get(0).getService().getService();
28     long serviceNameHashCode=serviceName.hashCode() & 0x7FFFFFFF;
29     int queneIndex=(int) (serviceNameHashCode % queneNum);
30     
31 //    LOGGER.info("put ServiceQueue [serviceName.hashCode():"+serviceNameHashCode+",queneIndex:"+queneIndex+",queneNum:"+queneNum+"] :[serviceName]"+serviceName);
32    
33     BlockingQueue<ServiceData<List<ServiceHealth>>>  queue=getQueue(queneIndex);
34     queue.put(data);
35     
36     LOGGER.info("put ServiceQueue[index:"+queneIndex+",size:"+queue.size()+"] success :[serviceName]"+serviceName);
37   }
38
39   @Override
40   public ServiceData<List<ServiceHealth>> take(final int queueIndex) throws InterruptedException {
41       return getQueue(queueIndex).take();
42   }
43   
44
45 }