|
|
|
@@ -35,7 +35,12 @@ public abstract class CommEngine extends HttpServlet |
|
|
|
private static final int SCHEDULER_THREAD_POOL_SIZE = 1; |
|
|
|
|
|
|
|
private static final long DEAD_BROADCAST_VIEWING_PERIOD_DEFAULT = 60; |
|
|
|
|
|
|
|
|
|
|
|
private static final int SERVICE_THREADPOOL_SIZE_DEFAULT = 1; |
|
|
|
|
|
|
|
private static final int POSTBACK_THREADPOOL_SIZE_DEFAULT = 2; |
|
|
|
private static final int POSTBACK_MAX_QUEUE_SIZE_DEFAULT = 10000; |
|
|
|
private static final int POSTBACK_MAX_BATCH_SIZE_DEFAULT = 100; |
|
|
|
/** |
|
|
|
* Maps a broadcastId to a broadcast. |
|
|
|
*/ |
|
|
|
@@ -69,6 +74,14 @@ public abstract class CommEngine extends HttpServlet |
|
|
|
|
|
|
|
private int completedJobCount = 0; |
|
|
|
|
|
|
|
private int serviceThreadPoolSize; |
|
|
|
|
|
|
|
private int postbackMaxQueueSize; |
|
|
|
|
|
|
|
private int postbackSenderPoolSize; |
|
|
|
|
|
|
|
private int postbackMaxBatchSize; |
|
|
|
|
|
|
|
abstract protected Broadcast mkBroadcast(); |
|
|
|
|
|
|
|
public CommEngine(String engineName) |
|
|
|
@@ -118,6 +131,26 @@ public abstract class CommEngine extends HttpServlet |
|
|
|
deadBroadcastViewingMinutes = Long.parseLong(periodStr); |
|
|
|
CommonLogger.startup.info(String.format("Dead broadcast viewing period: %d minutes", deadBroadcastViewingMinutes)); |
|
|
|
|
|
|
|
String str = config.getProperty("service_threadpool_size", |
|
|
|
new Integer(SERVICE_THREADPOOL_SIZE_DEFAULT).toString()); |
|
|
|
serviceThreadPoolSize = Integer.parseInt(str); |
|
|
|
CommonLogger.startup.info(String.format("service thread pool size: %d", serviceThreadPoolSize)); |
|
|
|
|
|
|
|
String string = config.getProperty("postback_max_queue_size", |
|
|
|
new Integer(POSTBACK_MAX_QUEUE_SIZE_DEFAULT).toString()); |
|
|
|
postbackMaxQueueSize = Integer.parseInt(string); |
|
|
|
CommonLogger.activity.info("Postback max queue size = " + postbackMaxQueueSize); |
|
|
|
|
|
|
|
string = config.getProperty("postback_threadpool_size", |
|
|
|
new Integer(POSTBACK_THREADPOOL_SIZE_DEFAULT).toString()); |
|
|
|
postbackSenderPoolSize = Integer.parseInt(string); |
|
|
|
CommonLogger.activity.info("Postback threadpool size = " + postbackSenderPoolSize); |
|
|
|
|
|
|
|
string = config.getProperty("postback_max_batch_size", |
|
|
|
new Integer(POSTBACK_MAX_BATCH_SIZE_DEFAULT).toString()); |
|
|
|
postbackMaxBatchSize = Integer.parseInt(string); |
|
|
|
CommonLogger.activity.info("Postback max batch size = " + postbackMaxBatchSize); |
|
|
|
|
|
|
|
scheduler = Executors.newScheduledThreadPool(SCHEDULER_THREAD_POOL_SIZE); |
|
|
|
scheduler.scheduleAtFixedRate(new Runnable() { public void run() { purgeStaleBroadcasts();}}, |
|
|
|
deadBroadcastViewingMinutes, deadBroadcastViewingMinutes, TimeUnit.MINUTES); |
|
|
|
@@ -153,9 +186,11 @@ public abstract class CommEngine extends HttpServlet |
|
|
|
@Override |
|
|
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) |
|
|
|
{ |
|
|
|
myException = null; |
|
|
|
try |
|
|
|
{ |
|
|
|
Broadcast broadcast = mkBroadcast(); |
|
|
|
broadcast.setServiceThreadPoolsize(serviceThreadPoolSize); |
|
|
|
try |
|
|
|
{ |
|
|
|
broadcast.decode(request, notInService); |
|
|
|
@@ -178,7 +213,8 @@ public abstract class CommEngine extends HttpServlet |
|
|
|
postBack = postBackMap.get(postBackURL); |
|
|
|
if (postBack == null) |
|
|
|
{ |
|
|
|
postBack = new PostBack(postBackURL, broadcast.broadcastType + "_status"); |
|
|
|
postBack = new PostBack(postBackURL, broadcast.broadcastType + "_status", |
|
|
|
postbackMaxQueueSize, postbackSenderPoolSize, postbackMaxBatchSize); |
|
|
|
postBackMap.put(postBackURL, postBack); |
|
|
|
} |
|
|
|
} |
|
|
|
@@ -206,7 +242,7 @@ public abstract class CommEngine extends HttpServlet |
|
|
|
{ |
|
|
|
// Put broadcast in broadcasts map. |
|
|
|
String broadcastId = broadcast.getBroadcastId(); |
|
|
|
if (broadcastId.length() != 0) |
|
|
|
if (broadcastId != null && broadcastId.length() != 0) |
|
|
|
{ |
|
|
|
broadcasts.put(broadcastId, broadcast); |
|
|
|
} |
|
|
|
|