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);
}
}
}
}