我會建議創建一個併發的單個服務。您可以使用線程池並在到達時向其提交作業。那麼您將不必擔心影響您整個服務的長時間運行的工作。
但是,這意味着您將不得不擔心對各種不同服務的併發訪問。如果每個服務只會一次處理單個事務,那麼爲每種類型的請求創建服務可能更容易。
如果您決定使用併發服務,那麼以下代碼是您如何使用ExecutorService
線程池的示例。
// create a thread pool with a dynamic number of workers
ExecutorService threadPool = Executors.newCachedThreadPool();
while (!shutdown) {
// read your SMS job into an object
SmsMessage message = receiveSmsMessage();
threadPool.submit(new SmsJob(message));
}
// once we have submitted all jobs to the thread pool, it should be shutdown
threadPool.shutdown();
...
public class SmsJob implements Runnable {
private SmsMessage message;
public MyJobProcessor(SmsMessage message) {
this.message = message;
}
public void run() {
// process the message
}
}
此刻1個服務= 1個事務,所以我會堅持每個請求一個服務。但很高興知道如何同時做到這一點。 – Axxiss 2012-08-01 09:10:03