package se252.jan15.calvinandhobbes.project0; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.model.DeleteMessageRequest; import com.amazonaws.services.sqs.model.Message; import com.amazonaws.services.sqs.model.ReceiveMessageRequest; import com.amazonaws.services.sqs.model.SendMessageRequest; import com.amazonaws.util.json.JSONArray; import com.amazonaws.util.json.JSONException; class WorkerThread implements Runnable { private String category; public WorkerThread(String _category){ category = _category; } @Override public void run() { LayerInfo[] layers = IIScCampusMapSDB_GETService.getCategoryData(category); AmazonSQS queueClient = Queues.getQueue(); String obj = "{}"; try { if(layers != null) obj = new JSONArray(layers).toString(); } catch (JSONException e) { e.printStackTrace(); } obj = category + "$" + obj; queueClient.sendMessage(new SendMessageRequest(Queues.resp, obj)); } @Override public String toString(){ return this.category; } } public class IIScCampusMapGETProcessor { private static int nThreads = 15; public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(nThreads); Queues.initQueues(); SDBConn.initSDB(); AmazonSQS queueClient = Queues.getQueue(); System.out.println("GET Processor started with "+nThreads+" threads"); while(true) { ReceiveMessageRequest receiveReq = new ReceiveMessageRequest(Queues.req); receiveReq.setWaitTimeSeconds(10); List<Message> messages = queueClient.receiveMessage(receiveReq).getMessages(); for (Message message : messages) { String category = message.getBody(); Runnable worker = new WorkerThread(category); queueClient.deleteMessage(new DeleteMessageRequest(Queues.req, message.getReceiptHandle())); executor.execute(worker); } } } }